【发布时间】:2014-07-01 11:53:00
【问题描述】:
我正在尝试转换以下QString:
QString nom, prenom, promo;
...
QString modelName = nom + "_" + prenom + "_" promo;
转为LPTSTR。
到目前为止,我已经使用了这个:
LPTSTR mm = (LPTSTR) modelName.utf16();
但是返回的LPTSTR 只包含QString 的第一个字符。我尝试了很多方法,包括通过char *,但没有任何效果。
我应该怎么做才能将完整的 QString 放入 LPTSTR?
【问题讨论】:
-
证明你只能得到 1. 字符的代码在哪里?你确定你使用的是 unicode win32 API 吗?
-
mm 之后被写入我用另一个软件打开的文件中。在这一个中,我只能看到一个字母。但是当我直接输入名字时,LPTSTR mm = "TEST CODE";它工作得很好。
-
当您将字符串写入该文件时,我们如何确定您没有做错任何事情?但是,如果 LPTSTR mm = "TEST CODE" 有效,则您无法使用 UNICODE #define 进行编译,并且您的 LPTSTR 是 8 位字符,而不是 16 位字符。也许您需要 modelName.toLocal8Bit() 或 modelName.toUtf8()。
-
我不是写文件的人。我正在调用软件提供的库中的一个函数,但我不知道它发生了什么,我给它一个变量。但是再一次,如果我直接在代码中填写 mm,比如 mm = "TEST",它就可以正常工作。不,我不确定我使用的是 unicode Win32 API。我怎么能检查呢?
-
您应该注意,
modelName.utf16()已失效,因此您不能将此指针存储在任何地方。