2012-05-01 41 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

相關問題