0

C++ でタッチ タイピング コンソール プログラムを作成しました。ファイルからテキストを読み取り、画面にロードします。ユーザーが次の文字に進むには、正しい文字を入力する必要があります。私の唯一の問題は「\ n」にあるため、テキストファイル(読み取り元のファイル)に次のようなものがあった場合:

"
hello
dude
Sup
"

ユーザーが「こんにちは」と入力した後、enter右を押す必要がありますか? しかし、彼が を押すたびにenter、getch() は彼を現在の行の先頭に戻します。

どうすればこれを修正できますか?

次のように、ファイル全体を読み取り、文字列に保存しています。

void getTextFromFile()
{
    text.assign(istreambuf_iterator<char>(fin), istreambuf_iterator<char>());       
}
4

2 に答える 2

1

まず第一に、 getch() は非推奨です (問題が発生し始めた場合の参考までに)。私の理解では、一度に 1 文字の文字入力を受け入れようとしています。'\n' エンター プレスに getch() を使用している場合は、問題ありません。そうでない場合は、さらに説明してください。

于 2012-07-09T22:21:23.377 に答える
1

早速実験してみました。どうやらgetch()(レーガンが言うように、これは非推奨です。_getch()代わりに使用してください)を押すと、 では'\r'なくが返されます。'\n'Enter

現在のプログラムで、;Ctrl-Jの代わりに入力してみてください。からの結果Enterが得られるはずです。'\n'getch()

今後の参考のために、 を呼び出す実際のコードを示してくださいgetch()currentLetter = getch();あなたがコメントで言及したことが、質問のコードにどのように関連しているかわかりません。

于 2012-07-09T22:32:15.257 に答える