2012-05-01 39 views
0

我想从字符串输入中创建一个数组。表达式必须有一个常量值

string input; 
getline(cin,input); 
string inputarray1[100]; 
istringstream pp(input); 
int* inputPosition=0; 
while (!pp.eof()) 
{ 
    getline(pp, inputarray1[*inputPosition], ' '); 
    inputPosition++; 
} 
int* a = inputPosition; 
string halp[a]; 

我使用函数getline来分析我的输入(连同一个istringstream),并把该到一个数组,但我怎么可以创建已经没有多余的空位置的阵列?

+1

我认为你需要做更多的介绍一下你努力完成,而不是如何尝试完成它。 –

+1

如何使用矢量而不是数组? –

+0

为什么你使用int指针作为int? –

回答

2

使用的载体,从头部<vector>

vector<string> inputArray; 
while (getline(pp, input, ' ')) 
    inputArray.push_back(input); 

可以与inputArray.size()获得串的数量,并可以访问单个元件,正如与阵列,inputArray[index]

注意operator>>被分隔在空格,所以你可能也做到这一点(除非你出于某种原因要区别对待标签)

while (pp >> input) 
    inputArray.push_back(input); 
+0

即工作,但现在 尝试{ 如果(的atoi(inputarrayconverted [P] .c_str())> = 0){ inputarrayconverted [P] = “N”; } } catch(int e){} 不起作用。它给了我一个“Debug Assertion Failed!”信息。我所要做的就是验证如果数组的位置是一个int,将其他数组的相应值更改为'n' –

0

我不是100%清楚你的问题,但它听起来像你真的想用一个Hash Table而不是一个数组。这样可以让您将用户输入映射到其他位置,而不需要您提到的空白阵列位置。

+0

我想我主要是问如何在while循环中创建一个计数器,并使用该最终数字来创建一个相同大小的新数组,然后将inputarray1 []映射到halp []。 所有解决这些问题的网站都会说“创建一个大型数组,存储您的值,然后再创建一个更小尺寸的数组”。我想我只是混淆了如何创建适当大小的数组。 –

+0

然后你可以使用类似矢量的东西。见Benjamin Lindley的答案。 – Oleksi

相关问题