2016-05-06 15 views
-4

私はこのように私のmain.cppにを実行する場合:linuxでコマンドラインリダイレクト(wiith <)を使って文字列にファイルの内容を保存していますか?

./main.cpp < file.txt 

私は文字列のベクトルで、この入力を保存すると、同じ行の各単語は、新しい行に格納されます。どのようにして効率的かつエレガントに各行全体をベクトル文字列の1つの要素に格納できますか? は、たとえば のために私はそれになりたい:

Myvector[0]= "this is just a sentence" 

は好きではない:

Myvector[0] ="this" 
Myvector[1]="is" 
Myvector[3]="just" etc 
+1

実際にコードを追加する必要があります。 –

+1

入力がどこから来るのかは関係ありません。 –

+4

'cin >> Myvector [i];'を使っているようですね。 '>>'はただ一つの単語を読みます。行全体を読みたい場合は 'getline()'を使います。 – Barmar

答えて

4

使用std::getline。改行が遭遇するまで

std::string text_line; 
while (std::getline(std::cin, text_line)) 
{ 
    my_vector.push_back(text_line); 
} 

std::getline関数は、文字列にデータを格納し、読み込みます。

std::cinは、ファイルのデータをパイプしているために使用されます。

+0

空の行があればセンターと私はちょうどそれらを無視したいですか?ありがとう私は各単語が新しい行に格納されている理由を前にループを使用していませんでした。 –

+0

次に、ベクトルにプッシュする前に 'if'文を入れます。 'std :: string :: empty()'を参照してください。 –

関連する問題