我有一个数据文件,每行有3列:两个3个字符的字符串和一个像这样的浮点数。
AAA BBB 699.25
我正在尝试使用ifstream读取数据:
ifstream input;
char str1[3], str2[3];
float num;
input.open("data.txt");
input >> str1 >> str2 >> num;
cout << str1 << endl;
cout << str2 << endl;
cout << num << endl;
然而,我得到Clang的输出是:
(blank)
BBB
699.25
或者英特尔C ++:
AAABBB
BBB
699.25
如果我获得没有多个“&gt;&gt;”的单个变量运营商一切正常。我猜我不懂&gt;&gt;当我将更多数据推入数组时,它会在缓冲区中覆盖我的数据。
答案 0 :(得分:7)
字符串"AAA"
长度不是三个字符。您有三个可见字符和一个不可见空字符。这意味着保留"AAA"
您需要四个字符的存储空间。如果您使用std::string
,这将成为一个非问题,因为它会为您处理这样的事情。由于您只是将其标记为C ++,我会将char str1[3], str2[3];
更改为std::string str1, str2;