-1
文字列内の複数行の入力をベクトル(または配列)にしたいと考えています。私はgetline()で文字列を収集し、すべての行が収集されたらwhileループを中断したい。私は "if(line.empty)"で壊れてしまいましたが、動作しません。私は間違って何をしていますか?getlineループを中断するC++
文字列内の複数行の入力をベクトル(または配列)にしたいと考えています。私はgetline()で文字列を収集し、すべての行が収集されたらwhileループを中断したい。私は "if(line.empty)"で壊れてしまいましたが、動作しません。私は間違って何をしていますか?getlineループを中断するC++
文字列を試してから長さ関数がうまく動作するように、このようなことを試すことができます。コードが...
#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
ところで、あなたは二回ループあたり 'line.empty'を呼び出す必要はありません。それが空でないかどうかをチェックします。それが偽であれば、それは空でなければならない。ループ内の2番目の 'if'をちょうど' else'に変更してください。おそらくあなたの問題は解決されませんが、それは指摘されるべきです。また、***は中括弧を省略しません***。あなたが悪用された場合、最終的にあなたを噛んでしまう悪い習慣です。 – Carcigenicate