使用>>无法从文件中正确读取数据操作者

时间:2015-03-18 17:45:37

标签: c++

我有一个数据文件,每行有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;当我将更多数据推入数组时,它会在缓冲区中覆盖我的数据。

1 个答案:

答案 0 :(得分:7)

字符串"AAA"长度不是三个字符。您有三个可见字符和一个不可见空字符。这意味着保留"AAA"您需要四个字符的存储空间。如果您使用std::string,这将成为一个非问题,因为它会为您处理这样的事情。由于您只是将其标记为C ++,我会将char str1[3], str2[3];更改为std::string str1, str2;