でファイルを読み込んで改行文字を省略します:が、私はこのコードを持っているC++
#include <iostream>
#include <string>
#include <fstream>
int main()
{
std::ifstream path("test");
std::string separator(" ");
std::string line;
while (getline(path, line, *separator.c_str())) {
if (!line.empty() && *line.c_str() != '\n') {
std::cout << line << std::endl;
}
line.clear();
}
return 0;
}
ファイル「テスト」は、スペースの様々な数で区切られ、数字が入力されます。数字だけを読み、スペースと改行を省略する必要があります。このコードでは、空白は省略して改行文字を省略しています。
これらの入力ファイル「テスト」から数行は以下のとおりです。
3 19 68 29 29 54 83 53
14 53 134 124 66 61 133 49
96 188 243 133 46 -81 -156 -85
私は問題はこの*line.c_str() != '\n'
が文字列line
ヒット改行文字とプログラムが印刷を続けるかどうかを判断するための適切な方法ではないということだと思います改行!
この1つは素晴らしい作品:
#include <iostream>
#include <string>
#include <fstream>
int main()
{
std::ifstream path("test");
std::string separator(" ");
std::string line;
while (getline(path, line, *separator.c_str())) {
std::string number;
path >> number;
std::cout << number << std::endl;
}
return 0;
}
'* line.c_str()=「\あなたはおそらくn''チェックする必要があります:私たちは、その後、各ラインから整数を読み、その後
stringstream
に各行を変換し、行毎にファイルを読み込みますその行に空白だけが含まれていないことを確認します。入力の例を見ずに言うのは難しいです( ''\ n' '文字の位置がわかるようにしてください)。 – user0042最初の文字が改行であるかどうかだけを確認しています。数字が行の最後にある場合、改行は最初の文字ではなく 'line'の最後の文字になります。 – Barmar
'path >> number;'を使用して、空白をスキップして単一の番号を読むのはなぜですか? – Barmar