2012-05-01 23 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]; 

私は(istringstreamと一緒に)私の入力を解析するためのgetlineを使用して、配列の中にそれを置くことが、どのように私は余分な空の場所を持っていない配列を作成することができますでしょうか?

+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

、今 試み{IF(ATOI(inputarrayconverted [P] .c_str())> = 0){ inputarrayconverted [P] = "N"。 } } catch(int e){} が機能していません。それは私に "デバッグアサーション失敗!"メッセージ。私がしようとしているのは、配列の位置がintの場合、他の配列のそれぞれの値を 'n'に変更し、 –

0

あなたの質問では100%明確ではありませんが、実際には配列の代わりにHash Tableを使用したいと思うようです。これにより、あなたが言及した空の配列の場所を使わずに、ユーザーの入力を他のものにマップすることができます。

+0

私は主にwhileループ内でカウンタを作成する方法を尋ねていて、その最終番号を使って同じサイズの新しい配列を作成しますinputarray1 []をhalp []にマップします。 これらの問題を解決するウェブサイトはすべて「大規模な配列を作成し、値を格納してから、小さなサイズの配列をもう1つ作成する」と言います。私はちょうど適切なサイズの配列を作成する方法について混乱していると思います。 –

+0

次に、ベクトルのようなものを使うことができます。 Benjamin Lindleyの答えを参照してください。仕事 – Oleksi

関連する問題