-2

给定一个包含字符串“Hello World”的文件(请注意,“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)。第三个参数做你想做的事,它默认为'\n'. std::cin >> std::noskipws >> str或者,您可以通过设置传递或完全关闭标志来禁用跳过空格std::cin.unsetf(std::ios::skipws)

于 2013-02-07T05:41:55.983 回答
2

要从中读取一行ifstream,您可以使用std::getlinestd::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 回答