#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 会显示。
答案 0 :(得分:4)
实际上, 是您要求的输出:您正在从文件中读取第一个字符串标记。这恰好是你在第一行写入文件的数字“1”。
流媒体运营商不会神奇地解析您的文件以获得最合适的令牌;他们只是阅读下一个可用的令牌。即使他们这样做,“1”也是字符串的完美有效选择。
答案 1 :(得分:1)
您在文件中连续存储1 2 3,然后从文件中获取第一个值。这个值是1,你感到惊讶吗?如果您想要其他值,则必须多次调用函数中的流。
答案 2 :(得分:1)
tester.txt的第一行是f
,1
。
x是一个字符串,因此当您使用r>>x
从tester.txt中读取时,您会看到第一行,即"1"
答案 3 :(得分:1)
当您打开流时,以上下方式打开它,这意味着流位于第一行的开头。
您写道:
w << f << endl << s << endl << t << endl << x ;
所以这些行是:
f = 1
,所以你得到了你应该得到的东西。
答案 4 :(得分:1)
这不是你想要的,还是我错过了什么?
您按顺序在流中输入值“1”“2”“3”“hello”。 然后,您从那里流式传输到一个字符串。字符串规范说明所有字符都将被复制,直到第一个有效的空格。它会将“1”视为char,然后停在换行符处。因此,您将获得一个字符串,字符串“1”;