2017-09-06 7 views
-1

文字列内の複数行の入力をベクトル(または配列)にしたいと考えています。私はgetl​​ine()で文字列を収集し、すべての行が収集されたらwhileループを中断したい。私は "if(line.empty)"で壊れてしまいましたが、動作しません。私は間違って何をしていますか?getlineループを中断するC++

+0

ところで、あなたは二回ループあたり 'line.empty'を呼び出す必要はありません。それが空でないかどうかをチェックします。それが偽であれば、それは空でなければならない。ループ内の2番目の 'if'をちょうど' else'に変更してください。おそらくあなたの問題は解決されませんが、それは指摘されるべきです。また、***は中括弧を省略しません***。あなたが悪用された場合、最終的にあなたを噛んでしまう悪い習慣です。 – Carcigenicate

答えて

0

文字列を試してから長さ関数がうまく動作するように、このようなことを試すことができます。コードが...

#include <iostream> 
#include <vector> 
#include <string> 

using namespace std; 

int main() 
{ 
    vector<string> lines; 
    string line; 
    while (getline(cin >> ws, line)) 
    { 
     if (!line.length()) 
      break; 
      lines.push_back(line); 

    } 
    for(int i=0;i<lines.size();i++)cout<<lines[i]<<endl; 
return 0; 
} 

複数の入力を読み込んでいるときに問題がある場合は、ループの開始時にcin >> ws(空白)を使用してください。

入力

asds as 
dsaf asd 
asdasd dsa 
fadsa asd 
fasd sad 
afdas asd 

出力

asds as 
dsaf asd 
asdasd dsa 
fadsa asd 
fasd sad 
afdas asd