-1

我有一个小问题。我正在尝试使用 fstream 从 Win32 编辑控件中保存一些文本。我的代码:

LPTSTR text = L"";
ofstream file;
GetDlgTextItem(hWnd, EDIT_MAIN, text, UINT_MAX);
file.open(filePathName);
file << text;
file.close()

如果我输入 hello world 并保存它,文本文件会显示其他内容,例如 001D2F38。有什么解决办法吗?

4

1 回答 1

1

您需要分配内存来接收文本,并且需要确保文本缓冲区的数据类型与您用于写入文件的数据类型相匹配。两者都不是你正在做的。

尝试更多类似的东西:

HWND hEdit = GetDlgItem(hWnd, EDIT_MAIN);
int len = GetWindowTextLengthA(hEdit);
std::vector<CHAR> text(len+1, 0);
GetWindowTextA(hEdit, &text[0], len);
ofstream file;
file.open(filePathName);
file << &text[0];
file.close();

或者:

HWND hEdit = GetDlgItem(hWnd, EDIT_MAIN);
int len = GetWindowTextLengthW(hEdit);
std::vector<WCHAR> text(len+1, 0);
GetWindowTextW(hEdit, &text[0], len);
wofstream file;
file.open(filePathName);
file << &text[0];
file.close();

甚至更像这样的东西:

HWND hEdit = GetDlgItem(hWnd, EDIT_MAIN);
int len = GetWindowTextLengthW(hEdit);
std::vector<WCHAR> text(len+1, 0);
GetWindowTextW(hEdit, &text[0], len);

int len2 = WideCharToMultiByte(CP_UTF8, 0, &text[0], len, NULL, 0, NULL, NULL);
std::vector<char> utf8(len2+1, 0);
WideCharToMultiByte(CP_UTF8, 0, &text[0], len, &utf8[0], len2, NULL, NULL);

ofstream file;
file.open(filePathName);
file << &utf8[0];
file.close();
于 2014-07-08T01:11:21.040 回答