wchar_t* 转QString出异常,进来看看吧

aqbeyond 2019-10-20 12:40:50
如题,转换代码如下:
wchar_t* msg2 = TEXT("序运行报错");
QString qMsg = QString::fromWCharArray(msg2);
ui.teInfo->append(qMsg);

调试到第二行时,报错:__fastfail(FAST_FAIL_STACK_COOKIE_CHECK_FAILURE);
...全文
752 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
aqbeyond 2019-12-10
  • 打赏
  • 举报
回复
QString QStringUtil::wchar_tToQString(wchar_t *wchar)
{
QString qMsg = QString::fromWCharArray(wchar);

return qMsg;
}

wchar_t * QStringUtil::QStringToWchar_t(QString str)
{
wchar_t szBuf[1024];
wcscpy_s(reinterpret_cast<wchar_t*>(szBuf),
sizeof(szBuf) / sizeof(wchar_t),
reinterpret_cast<const wchar_t*>(str.utf16()));

return szBuf;
}

自己Mark一下。。。
满桌烟灰 2019-10-24
  • 打赏
  • 举报
回复
aqbeyond 2019-10-23
  • 打赏
  • 举报
回复
引用 3 楼 donwmufromdying 的回复:
你用的TEXT宏不对,微软的定义里:
Syntax
C++

Copy
void TEXT(
quote
);
Parameters
quote

Pointer to the string to interpret as UTF-16 or ANSI.

Return Value
None

所以这个宏返回是个空指针。


调试的时候,有时候可以,有时候出错。
那有什么好的解决方法吗
donwmufromdying 2019-10-22
  • 打赏
  • 举报
回复
你用的TEXT宏不对,微软的定义里: Syntax C++ Copy void TEXT( quote ); Parameters quote Pointer to the string to interpret as UTF-16 or ANSI. Return Value None 所以这个宏返回是个空指针。
aqbeyond 2019-10-21
  • 打赏
  • 举报
回复
没人遇到过这样的问题吗?
懒懒的吉他手 2019-10-21
  • 打赏
  • 举报
回复
要么字符串用\0结尾,要么手动在fromWCharArray中指定长度,不然谁知道你字符串什么时候结束

16,175

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧