[解決済み] std::stringをファイルに書き出すには?
2022-03-08 13:57:41
質問
を書きたいのですが
std::string
変数をファイルに保存します。私は
write()
メソッドを使用すると、ファイルに書き込まれます。しかし、ファイルを開くと、文字列の代わりにボックスが表示されます。
文字列は可変長の1単語のみです。は
std::string
それとも文字配列か何かを使うべきでしょうか?
ofstream write;
std::string studentName, roll, studentPassword, filename;
public:
void studentRegister()
{
cout<<"Enter roll number"<<endl;
cin>>roll;
cout<<"Enter your name"<<endl;
cin>>studentName;
cout<<"Enter password"<<endl;
cin>>studentPassword;
filename = roll + ".txt";
write.open(filename.c_str(), ios::out | ios::binary);
write.put(ch);
write.seekp(3, ios::beg);
write.write((char *)&studentPassword, sizeof(std::string));
write.close();`
}
解決方法は?
現在、バイナリーデータを
string
-オブジェクトをファイルに保存します。このバイナリデータは、おそらく実際のデータへのポインタと、文字列の長さを表す整数から構成されるだけでしょう。
テキストファイルに書き込む場合は、おそらく
ofstream
は、quot;out-file-stream"です。これは、以下のように正確に動作します。
std::cout
しかし、出力はファイルに書き込まれます。
次の例は、stdinから1つの文字列を読み込み、その文字列をファイルに書き込むものです。
output.txt
.
#include <fstream>
#include <string>
#include <iostream>
int main()
{
std::string input;
std::cin >> input;
std::ofstream out("output.txt");
out << input;
out.close();
return 0;
}
なお
out.close()
のデコンストラクタは、ここでは厳密には必要ありません。
ofstream
を実行すると同時に、この処理を行うことができます。
out
がスコープ外になる。
詳しくは、C++-reference を参照してください。 http://cplusplus.com/reference/fstream/ofstream/ofstream/
さて、バイナリ形式でファイルに書き込む必要がある場合、文字列の中の実際のデータを使って行う必要があります。このデータを取得する最も簡単な方法は
string::c_str()
. ということで、使えますね。
write.write( studentPassword.c_str(), sizeof(char)*studentPassword.size() );
関連
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】Enterキーを押して続行する
-
[解決済み] std::string を const char* または char* に変換する方法
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] なぜテンプレートはヘッダーファイルでしか実装できないのですか?
-
[解決済み] C++でintをstringに変換する最も簡単な方法
-
[解決済み] std::stringのインスタンスを小文字に変換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】'cout'は型名ではない
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み】変数やフィールドがvoid宣言されている