学校の割り当てには、ゲームを終了する必要があります。私はほぼ完成しましたが、最後の課題は私に苦労しています。C++、txtファイルからテキストを読み取り、テキストボックスに追加するか、またはテキストボックスにテキストを追加する
現在、ユーザーがスコアが高い場合に、編集ボックスからテキスト(名前)を取得する方法を考え出しました。
これはで行われます。
GetDlgItemText(hDlg, IDC_EDIT1, &Tsaved, 20);//Get text from edit box
私もこのメッセージボックスにそれを追加することができています:
MessageBox(hDlg, &Tsaved, buff, IDOK == nId);//write text from edit box to message box
私の思考プロセスとコードのプロセスはこれです:
取得したテキストをテキストボックスに直接追加することができなかったため、取得したテキストをテキストファイルに書き込んでいます。これで私はファイルに何かを書くことができます。
私はTsaved
がTCHAR
で2バイトしかないことを知っていますが、文字列を使用するファイルに書き込むには、文字列にキャスト/変換する必要があります。これで、取得するテキストの最初の文字をファイルに書き込むだけです。
例: エディットボックスの入力: "ドン"
メッセージボックス出力: "ドン"
テキストファイル出力: "D"
は、これは私が鋳造/ A変換を行っている方法です。
TCHAR Ts = Tsaved;
stringstream ss;
string s;
char c = Ts;
ss << c;
ss >> s;
そして、これは私がファイルに書き込む方法です:
std::ofstream inputfile("filename.txt");
if (!inputfile)
{
std::cerr << "Error writing to ..." << std::endl;
}
else
{
for (int x = 0; x < sizeof(Tsaved)-1; x++)
{
int a = sizeof(Ts);
//inputfile << sizeof(Tsaved)/sizeof(TCHAR) << endl;
inputfile << s << endl;
//inputfile << a << endl;
}
}
どのように私は取得した編集ボックスの全内容をテキストファイルに書き込むことができますか?
ありがとう、私は2番目にそれを試してみます。私はビジュアルスタジオ2015を使用しています...もう1つの質問は、あなたはそれが1つの文字チャットのためのスペースしか持っていないと言いました。メッセージボックスが完全に取得されたテキストを取得することはどうしたら可能ですか? –
@ D-Antonio 'GetDlgItemText()'を呼び出すときに20文字分の空きがあると言ったので、20文字全てをコピーしました。余分な19文字は、あなたがスペースを持っていた1文字の後にメモリにあったものに書き込まれていたので、メモリは壊れていました。基本的に重要なことは何も上書きされていないことが幸運にも得られました。 – Andy