int main(){
std::cout << "Insert file name/or path. \n NOTE: ONLY INPUTS. DELETES PREVIOUS DATA.\nV.6" << std::endl;
std::string filen;
std::cin >> filen;
std::ofstream myFile;
try{
myFile.open(filen, std::ios::out);
}
catch(std::fstream::failure){
std::cout << "Could not open file!\n Make sure the name and data type are valid.";
system("pause");
}
while(true){
int press = getch();
if(press == 43) myFile.close();
if(press == 8){myFile << "\b" << " " << "\b";std::cout << "\b" << " " << "\b" << std::flush;}
if(press == 13){ myFile << "\n"; std::cout << "\n" << std::flush;}
if(press != 43 && press != 127 && press != 13 && press != 8){myFile << (char)press;std::cout << (char)press;}
}
return 0;
}
答えて
@BoundaryImpositionがすでに指摘しているように、"\b"
をファイルに書き込むと、バイナリのバックスペース文字が実際にファイルに書き込まれます。その代わりにあなたが望むのはmyFile.seekp(-1, std::ios_base::cur);
です。 win/dosマシンの場合は、'\n'
文字で余分な注意が必要です(テキストストリームに書き込まれると、0x0d 0x0a
に変換されるため、1の代わりに2つの位置を検索する必要があります)。
しかし、一般的に、あなたは非常に巨大なファイルを扱うされていない場合、(必要に応じて文字を削除するには、pop_back
またはerase
を使用して)ちょうどstd::string
にコンテンツを保存するための方法が容易になり、ときにファイルに書き込みます終了しました。
これらは「ランダムな文字」ではありません。それらはバックスペース文字です!入力したとおりに入力します。
これは、16進エディタ(またはプログラムの出力をhexdump
などでパイプすること)で確認できます。
共通シェルの動作を複製する場合は、バックスペース文字を識別するための独自のコードを作成し、myFile
に追加する代わりに、以前に入力した文字を削除する必要があります。
そしてこのプログラムは間違いなくCです! –
どうしたらうまくいくのですか?私はI/Oをファイルするためのノブです。以前言われたことは、端末がファイルとは異なる文字を受け取ったからです。 – TheScripterGeek
@TheScripterGeek多くのシステムでは、端末はファイルです。 – user4581301
- 1. Ada:追加テキストファイル内のバックスペース
- 2. .txtファイルのバックスペース文字
- 3. 「バックスペース」
- 4. QTextStreamにバックスペースを書き込む方法は?
- 5. Rangyはcontentedit div内のバックスペースでキャレット位置を失います
- 6. ファイルに辞書を書く
- 7. 働く `.pdbrc`ファイルを書くには?
- 8. CefSharpはバックスペースからバックスペースを無効にします
- 9. ファイル内のファイルを開く方法は?
- 10. のXtext - バックスペース
- 11. バックスペースの問題
- 12. Java内のディレクトリ内のファイルを何もチェックしないスレッドを書く方法
- 13. 危険なプレイブック:ファイルの内容を書く方法
- 14. ファイル内に関数関数のパラメータを書く - Python
- 15. コルドバでファイルシステム内のBLOBファイルを書く - イオン
- 16. ファイルの内容にコードごとに別々のファイルを書く - python
- 17. JavaFXのテキストフィールドのバックスペース
- 18. クラス内にstructを書く
- 19. Javascriptのタイプライターが適切に書き込んでバックスペースしない
- 20. Terminal Vim(Cygwin)のバックスペース
- 21. 辞書をファイルに書く方法Python?
- 22. 角度mdChipsオートコンプリートは、バックスペース
- 23. バックスペースや削除方法は?
- 24. prototxtファイルにコメントを書くには?
- 25. ファイル作成スクリプトを書くには?
- 26. Android:CSVファイルに改行を書くには?
- 27. C#でisilo .pdbファイルを書くには?
- 28. csvファイルにリストの辞書を書くには?
- 29. リセットボタン - バックスペースOnClick
- 30. EPPlusにExcelファイルを書く
トピックをオフにする:ストリームの例外を有効にする必要があります。デフォルトでは、ストリームはスローされません。通常、入力エラーがあまりにも一般的で例外的とみなされることがないため、より良い結果が得られます。ストリーム操作で成功したかどうかは、ストリームがエラーを報告した場合、 'if(!myFile)'が 'if'の本文に入るオブジェクトをテストすることでテストできます。とにかく例外が欲しいと思ったら、これを読んでください:http://en.cppreference.com/w/cpp/io/basic_ios/exceptions – user4581301