2012/11/13 更新: 我发现我的问题已经被问到了。这是处理不同行尾文本文件的一个很好的解决方案: Getting std :: ifstream to handle LF, CR, and CRLF?
是否有可能为 libstdc++ 做出贡献?如何?
2012/11/11
我发现cout有问题。
如果 getline() 返回了两个字符串,
则第二个字符串将覆盖输出中的第一个字符串。
这是示例代码:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
//normal code
cout << "Normal result:" << endl;
string str1 = "hello";
cout << str1;
str1 = "123";
cout << str1;
cout << endl;
//broken code
cout << "Bug?" << endl;
ifstream fin;
fin.open("test.dat");
string str;
getline(fin, str);
cout << str;
getline(fin, str);
cout << str;
fin.close();
return 0;
}
这是输入文件(test.dat):
hello
123
输出将是:
Normal result:
hello123
Bug?
123lo
我使用的是 ubuntu 12.10 64 位,
编译器的版本是 g++ (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2。
有什么建议吗?有没有人告诉我在哪里提交错误?