5

while ループで std::getline を使用し、出力を cout で印刷しています。印刷中に行の先頭が途切れていることがわかりました。

期待どおりに動作します:

std::string line;
while(std::getline(csv, line)) {
 std::cout << line << std::endl
}

期待どおりに動作せず、行から最初の 2 文字が切り取られます

std::string line;
while(std::getline(csv, line)) {
 std::cout << line << "  " << std::endl
}

以前はこの動作に気付いていませんでしたが、なぜ今起こっているのですか?

4

1 に答える 1

1

これが起こっているようです。文字列
の最後のline文字に文字が含まれていcarriage returnます。文字列が の場合Hello World、キャリッジ リターンと一緒に印刷すると、カーソルがH文字に戻ります。つまり、その後何かを印刷し始めると、古い文字列が上書きされます。
これを回避するにはendl、何よりも先に印刷する必要があります。

于 2013-03-02T07:11:10.140 に答える