1

そのため、istringstreamを使用してテキストファイルを解析しようとしていました。アイデアは、各行をスペースごとに分割し、サブストリングに基づいて処理を行うことです。このコードは、2つのことを除いて正常に機能します。つまり、各行の最後のサブストリングを二重にカウントし、ファイルの読み取りが完了すると障害をセグメント化します。私はこれまでsstreamを使用したことがないので、洞察が役立つでしょう。

file.getline(str,80);

    while(!file.eof())

    {

        cout<<str<<endl;
        istringstream iss(str);
        while (iss)
            {
                iss >> sstr;
                cout << "Substring: " <<sstr << endl;
         }
        file.getline(str,80);   
    }
4

2 に答える 2

5

ループは次のwhileようになります。

std::string line;

while (std::getline(file, line))
{
    std::istringstream iss(line);
    std::string token;

    while (iss >> token)
    {
        cout << "Substring: " << token << endl;
    }
}

および 入力操作はgetline、操作が成功したかどうかを示す bool への特別な変換を持っているストリーム オブジェクトを返します。それぞれのストリームの最後に到達すると正確に失敗します。

于 2011-09-08T17:46:15.220 に答える
2

while !eofほとんどの場合間違っています。

別の C++ の本に切り替えて、現在使用している本を教えてください。そうすれば、それに応じて嘲笑したり警告したりできます。

while (file.getline(str,80)) {
    cout<<str<<endl;
    istringstream iss(str);
    while (iss >> sstr) {
       cout << "Substring: " <<sstr << endl;
    }
}
于 2011-09-08T17:47:16.937 に答える