未使用运算符从文件中正确读取数据>>

Data not correctly read from file using >> operator

本文关键字:gt 读取 数据 运算符 文件 未使用      更新时间:2023-10-16

我有一个数据文件,每行有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

如果我在没有多个">>"运算符的情况下获得单个变量,则所有变量都能正常工作。我猜我不明白>>是如何工作的,当我向数组中推送更多数据时,它会覆盖缓冲区中的数据。

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