这不是我要求的输出

时间:2011-07-04 12:15:09

标签: c++ visual-c++

#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main() {
 ofstream w("d:/tester.txt");
 int f = 1;
 int s = 2;
 int t = 3;
 string x = "hello";
 w << f << endl << s << endl << t << endl << x ;
 w.close();

 ifstream r("d:/tester.txt");
 r >> x;
 cout << x << endl ;
 s = s + 10 ;
 r.close();

/* ofstream wa("d:/tester.txt");
wa << s;
wa.close();*/
}

我总是将输出等于 1 。 为什么会这样?当我要求显示字符串hello时, 1 会显示。

5 个答案:

答案 0 :(得分:4)

实际上, 是您要求的输出:您正在从文件中读取第一个字符串标记。这恰好是你在第一行写入文件的数字“1”。

流媒体运营商不会神奇地解析您的文件以获得最合适的令牌;他们只是阅读下一个可用的令牌。即使他们这样做,“1”也是字符串的完美有效选择。

答案 1 :(得分:1)

您在文件中连续存储1 2 3,然后从文件中获取第一个值。这个值是1,你感到惊讶吗?如果您想要其他值,则必须多次调用函数中的流。

答案 2 :(得分:1)

tester.txt的第一行是f1

x是一个字符串,因此当您使用r>>x从tester.txt中读取时,您会看到第一行,即"1"

答案 3 :(得分:1)

当您打开流时,以上下方式打开它,这意味着流位于第一行的开头。

您写道:

w << f << endl << s << endl << t << endl << x ;

所以这些行是:

  1. ˚F
  2. 取值
  3. X
  4. f = 1,所以你得到了你应该得到的东西。

答案 4 :(得分:1)

这不是你想要的,还是我错过了什么?

您按顺序在流中输入值“1”“2”“3”“hello”。 然后,您从那里流式传输到一个字符串。字符串规范说明所有字符都将被复制,直到第一个有效的空格。它会将“1”视为char,然后停在换行符处。因此,您将获得一个字符串,字符串“1”;