2012/11/13 更新: 私の質問がすでに出されていることがわかりました。さまざまな行末テキスト ファイルを処理するための適切なソリューションを次に示します。 Std :: ifstream を取得して LF、CR、および CRLF を処理しますか?
libstdc++ に貢献できますか? どのように?
2012/11/11
cout に問題があることがわかりました。
getline() から 2 つの文字列が返された場合
、2 番目の文字列が出力の最初の文字列を上書きします。
これはサンプルコードです:
#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 です。
何かアドバイス?バグを報告する場所を教えてくれる人はいますか?