我有一个数据文件,每行有3列:两个3个字符的字符串和一个像这样的浮点数.
AAA BBB 699.25
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用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;
Run Code Online (Sandbox Code Playgroud)
然而,我得到Clang的输出是:
(blank)
BBB
699.25
Run Code Online (Sandbox Code Playgroud)
或英特尔C++:
AAABBB
BBB
699.25
Run Code Online (Sandbox Code Playgroud)
如果我得到没有多个">>"运算符的单个变量,那么一切正常.我猜我不明白>>是如何工作的,当我将更多内容推入数组时,它会覆盖缓冲区中的数据.
该字符串"AAA"不是三个字符长.您有三个可见字符和一个不可见空字符.这意味着"AAA"你需要四个字符的存储空间.如果你使用std::string这个就成了一个非问题,因为它会照顾你这样的事情.因为你只是将它标记为C++我会char str1[3], str2[3];改为std::string str1, str2;