2017-02-18 16 views
1

spaceの行をfile.txtからどのように読み、それを私のvectorに記録するのですか? 私は多くの単語で構成されてラインを持っていますが、私のループはそれを見て一つずつを読んで、そのように印刷されない:ファイルを読む.txt C++

Hello, my friends,how are you? 

Hello,James, we are fine. 

例えば、私は、ファイル内の文字列を持っています

そして、私のコンソールでは、私は以下を参照してください。

Hello, 
my 
friends 
.... 
fine 

この私のループ:

while(rRecord»str) 
{ 
    lines.push_back(str); 
} 

そして、私の言葉を印刷し、私の機能:

void printRecord(int& numStr,struct winsize w,std::vector<std::string>& lines) 
{ 

for (int i = numStr; i < numStr + w.winsize::ws_row-1; i++) 
{ 

    if (i>=lines.size()) 
    break; 
    else 
    std::cout « lines[i] « std::endl; 

} 

    numStr += w.winsize::ws_row; 
} 
+0

'std :: getline()'の使用はどうですか? –

答えて

0

ライン・バイ・ラインを読むためには、このように、std::getlineを使用します。

std::string line; 
while (std::getline(inFile, line)) { 
    lineVector.push_back(std::move(line)); 
} 

std::movevectorは、新しい要素を作成するときに、それができることを意味し内部バッファをlineから「盗む」。つまり、lineは空の文字列になりますが、余分な割り当て+コピーが保存されます。


>>はあなたが予期しない結果にあなたがgetlineにしてみてください次の時間を取得する意味、ストリームで、改行を含む任意の末尾の空白を残しますので>>getlineを混合して、通常は良いアイデアではないことに注意してください。

+0

回答ありがとうございました。 –

+1

'std :: move'呼び出しは早すぎる最適化のように見えます。 –

関連する問題