给定一个包含字符串"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));