Here is a number: 150 Now here is a string: John Doe
很简单吧! 现在继续文件输入, 需要一点技巧, 所以先确认你已经明白了流操作,对
"<<" 和">>" 比较熟悉了,
…
因为你接下来还要用到他们。继续
二、ASCII 输入
输入和"cin" 流很像. 和刚刚讨论的输出流很像, 但你要考虑几件事情。在我们开始复
杂的内容之前, 先看一个文本:
12 GameDev 15.45 L This is really awesome!
为了打开这个文件,你必须创建一个 in-stream 对象,?像这样。
ifstream fin("input.txt");
现在读入前四行. 你还记得怎么用"<<" 操作符往流里插入变量和符号吧?好,?在
"<<" (插入)?操作符之后,是">>" (提取) 操作符. 使用方法是一样的. 看这个代码片段.
int number;
float real;
char letter, word[8];
fin >> number; fin >> word; fin >> real; fin >> letter;
也可以把这四行读取文件的代码写为更简单的一行。
fin >> number >> word >> real >> letter;
它是如何运作的呢? 文件的每个空白之后, ">>" 操作符会停止读取内容, 直到遇到
另一个>>操作符. 因为我们读取的每一行都被换行符分割开(是空白字符), ">>" 操作符
只把这一行的内容读入变量。这就是这个代码也能正常工作的原因。但是,可别忘了文件
的最后一行。
This is really awesome!
如果你想把整行读入一个 char 数组, 我们没办法用">>"?操作符,因为每个单词之
间的空格(空白字符)会中止文件的读取。为了验证:
char sentence[101]; fin >> sentence;
我们想包含整个句子, "This is really awesome!" 但是因为空白, 现在它只包含
了"This". 很明显, 肯定有读取整行的方法, 它就是 getline()。这就是我们要做的。
fin.getline(sentence, 100);