gpt4 book ai didi

c++ - QChar 转 wchar_t

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:18 26 4
gpt4 key购买 nike

我需要将 QChar 转换为 wchar_t

我试过以下方法:

#include <cstdlib>
#include <QtGui/QApplication>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {

QString mystring = "Hello World\n";
wchar_t myArray[mystring.size()];

for (int x=0; x<mystring.size(); x++)
{
myArray[x] = mystring.at(x).toLatin1();
cout << mystring.at(x).toLatin1(); // checks the char at index x (fine)
}

cout << "myArray : " << myArray << "\n"; // doesn't give me correct value
return 0;
}

哦,在有人建议使用 .toWCharArray(wchar_t* array) 函数之前,我已经尝试过了,它基本上做了与上面相同的事情,并且没有按应有的方式传输字符。

如果你不相信我,下面是代码:

#include <cstdlib>
#include <QtGui/QApplication>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {
QString mystring = "Hello World\n";
cout << mystring.toLatin1().data();
wchar_t mywcharArray[mystring.size()];
cout << "Mystring size : " << mystring.size() << "\n";
int length = -1;
length = mystring.toWCharArray(mywcharArray);
cout << "length : " << length;
cout << mywcharArray;

return 0;

}

请帮忙,我已经解决这个简单的问题好几天了。理想情况下,我根本不想使用 wchar_t,但不幸的是,第三方函数需要指向这种类型的指针,才能使用串行 RS232 命令控制泵。

谢谢。

编辑:要运行此代码,您需要 QT 库,您可以通过下载 QT creator 获取这些库,并在控制台中获取输出,您必须将命令“CONFIG += console”添加到 .pro文件(在 QT Creator 中)或如果使用 netbeans 项目则添加到属性下的自定义定义。

编辑:

感谢下方 Vlad 的正确回复:

这里是更新后的代码,可以做同样的事情,但使用 char by char 方法传输 char,并记住添加空终止符。

#include <cstdlib>
#include <QtGui/QApplication>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {


QString mystring = "Hello World\n";
wchar_t myArray[mystring.size()];

for (int x=0; x<mystring.size(); x++)
{
myArray[x] = (wchar_t)mystring.at(x).toLatin1();
cout << mystring.at(x).toLatin1();
}

myArray[mystring.size()-1] = '\0'; // Add null character to end of wchar array
wcout << "myArray : " << myArray << "\n"; // use wcout to output wchar_t's

return 0;
}

最佳答案

这是一个转换 QString 的例子进入std::wstringwchar_t数组:

#include <iostream>
#include <QtCore/QString>

using namespace std;

int main ()
{
// Create QT string.
QString qstr = "Hello World";

// Convert it into standard wstring.
std::wstring str = qstr.toStdWString ();

// Get the wchar_t pointer to the standard string.
const wchar_t *p = str.c_str ();

// Output results...
wcout << str << endl;
wcout << p << endl;

// Example of converting to C array of wchar_t.
wchar_t array[qstr.size () + 1];
int length = qstr.toWCharArray (array);
if (length < 0 || length >= sizeof(array) / sizeof (array[0]))
{
cerr << "Conversion failed..." << endl;
return 1;
}

array[length] = '\0'; // Manually put terminating character.
wcout << array << endl; // Output...
}

请注意转换QString into array 更容易出错,要输出unicode字符串,你必须使用std::wcout而不是 std::cout ,这是相同的输出流,但对于 wchar_t .

关于c++ - QChar 转 wchar_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3726805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com