文字列が 20 文字以内で、C++ でスペースを含むことができる場合、文字列をどのように読み取るでしょうか? たとえば、次のようなファイルがあります。
3
Namama 4 5 12
Cool 4 2 34
Not So Cool 4 2 45
できるだけ基本的な方法で書きたいと思います。そして、この場合は C++ のみを使用することをお勧めします (C のものは使用しません)。これは、std::string に格納することを意味します。
istream::getまたはistream::getlineを使用できますが、改行文字を避ける必要があります。これには問題があります (そして、私が書いているコードは初心者に見せる予定です)。
この問題の解決策は何ですか?
編集:
尋ねられたので、私が試したことをお話ししますが、うまくいくとは思いません。私は C++ の初心者ではなく、通常はistream::getや char 配列などを使用していましたが、改行文字を削除することは一部の人にとっては専門的すぎるように思えるかもしれません。
だから... istream::operator>>を使用してchar 配列またはstd::stringを読み取ると、スペース文字が表示されると読み取りが停止するため失敗します (いくつかの単語を読み取る必要がある場合があります)。これは、次のコードが失敗することを意味します。
char name[21];
std::cin >> name;
また...
std::string name;
std::cin >> name;
もう1つのことは、改行文字がシステムごとに異なり、実際にWindowsはデフォルトでそのうちの2つを使用することです。Windowsでistream::ignoreを引数として2で使用しようとしましたが、それが改行を無視する唯一の方法でした。これは、Windows が改行記号に 2 文字を使用するためであると結論付けました。つまり、Linux では動作せず、より複雑にする必要があります... 繰り返しになりますが、初心者には悪いことです。