如何在istream中仅通过'n'



给定一个包含字符串"Hello World"的文件(注意"Hello"one_answers"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"等分隔。

我该怎么办?

请改用std::getline(std::cin,str)。第三个参数可以执行您想要的操作,并且它默认为'n'。或者,您可以通过设置传递std::cin >> std::noskipws >> str来禁用跳过空白,或者通过执行std::cin.unsetf(std::ios::skipws) 来完全关闭标志

要从ifstream读取一行,可以使用std::getline。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;
}
string str;
while(fscanf(fin,"%sn",&str));

相关内容

  • 没有找到相关文章

最新更新