我正在用Visual c ++编写一个基本程序,该程序允许用户输入文本,然后该程序翻转文本并显示它以供用户复制。该程序运行良好,直到您在EDIT框中添加了回车键。当用户单击以翻转文本时,而不是向下一行,而是显示\ r \ n的实际字符。
有没有一种方法可以显示文本,而不是实际的字符串本身?
这是我设置文本的方式:
wchar_t lpwString[4096];
int length = GetWindowTextW(text->hwnd, lpwString, 4096);
SetWindowText(text->hwnd, flipText(lpwString, length));
这是方法flipText
LPWSTR flipText(wchar_t textEntered[], const int len) {
wchar_t text[4096];
wchar_t flipped[4096];
wcsncpy_s(text, textEntered, len +1);
wcsncpy_s(flipped, textEntered, len +1);
for (int i = len -1, k = 0; i > -1; i--, k++)
flipped[k] = text[i];
return flipped;
}
“文本”只是我创建的用于存储EDIT框数据的对象。
对于编辑框,返回是CR + LF序列,当您反转文本时,您正在将其转换为LF + CR,但无法识别(显示各个字符)。一种简单的解决方法是对反向字符串进行第二次传递,并将所有LF + CR对交换为CR + LF。
顺便说一句,您的flipText
函数已严重损坏-您正在执行原始字符串的无用额外副本,并且正在返回指向本地数组的指针,该数组仅在偶然的情况下起作用。一种更简单的方法可能只是在原处反转字符串。
另外,如果您使用的是C ++,则应考虑使用std::string
(或std::wstring
使用宽字符),这样可以消除整个类的缓冲区寿命/大小问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句