-2

文字列「HelloWorld」を含むファイルがあるとします(「Hello」と「World」の間にスペースがあることに注意してください)。

int main()
{
    ofstream fout("test.txt");
    fout.write("Hello World", 12);
    fout.close();

    ifstream fin("test.txt");
    vector<string> coll((istream_iterator<string>(fin)),
                        (istream_iterator<string>()));
    // coll contains two strings 'Hello' and 'World' rather than 
    // one string "Hello World" that is just I want.
}

つまり、istream内の文字列は、''、'\ n'などではなく、'\n'でのみ区切る必要があります。

どうすればいいですか?

4

3 に答える 3

5

std::getline(std::cin,str)代わりに使用してください。3番目のパラメーターは必要な処理を実行し、デフォルトは'\n'。です。または、passingを設定して空白のスキップを無効にするか、次std::cin >> std::noskipws >> strのようにしてフラグを完全にオフにすることができます。std::cin.unsetf(std::ios::skipws)

于 2013-02-07T05:41:55.983 に答える
2

から行を読み取るには、std::getlineifstreamを使用できます。std::getlineのデフォルトの区切り文字は\n

int main(int argc, const char * argv[])
{
    ifstream fin("test.txt");
    std::string str;

    while (std::getline(fin, str))
    {
        cout << str << endl;
    }

    return 0;
}
于 2013-02-07T05:47:41.233 に答える
1
string str;
while(fscanf(fin,"%s\n",&str));
于 2013-02-07T05:47:03.040 に答える