给定一个包含字符串“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'等分隔。
我该怎么办?
答案 0 :(得分:5)
请改用std::getline(std::cin,str)
。第三个参数执行您想要的操作,默认为'\n'
。或者,您可以通过设置传递std::cin >> std::noskipws >> str
来禁用跳过空格,或者通过执行std::cin.unsetf(std::ios::skipws)
答案 1 :(得分:2)
要阅读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;
}
答案 2 :(得分:1)
string str;
while(fscanf(fin,"%s\n",&str));