对于一个学校任务,我必须完成一个游戏。我已经接近完成了,但最后一项任务让我很难过。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