我在读《Essential C++》这本书,有个问题比较疑惑,求大神解答。代码如下:
#include <fstream>
using namespace std;
ofstream ofs("path/to/file.txt");
ofs << "abc" << ' ' << 1 << ' ' << 2 << endl;
ifstream ifs("path/to/file.txt");
string str;
int n1;
int n2;
ifs >> str; // abc
ifs >> n1; // 1
ifs >> n2; // 2
代码里面,为什么最后ifs每次输出会自动把abc / 1 / 2这三个数据分开?难道不是每次读取一行,然后再写代码分割吗?
能简单讲一下吗?
由于
ifstream
为istream
的子类,我们以istream
为对象展开讨论。非成员重载
istream& operator>> (istream& is, string& str);
和成员重载basic_istream& operator>>(int& value);
,都以空格为分隔符,自动完成恰当的类型转换。参见: http://cplusplus.com/referenc...