對於一個學校任務,我必須完成一個遊戲。我已經接近完成了,但最後一項任務讓我很難過。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」
這是如何我也做了鑄造/轉換:
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;
}
}
我如何能夠將獲得的編輯框的全部內容寫入文本文件?
非常感謝你,我會在一秒鐘之內嘗試它。我正在使用visual studio 2015 ...還有一個問題,你說它只有一個charachter的空間,這是正確的,因爲我已經注意到了。但是消息框怎麼能夠獲得完整的文本? –
@ D-Antonio既然你說你在調用'GetDlgItemText()'時有20個字符的空間,它會爲你複製全部20個字符。額外的19個字符在你有空間的1個字符後被寫入內存中的任何內容,以致內存被損壞。基本上你很幸運沒有重要的東西被覆蓋。 – Andy