- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要将 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::wstring和 wchar_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/
我阅读了文档,上面写着 QChar::isNumber()那个 Returns true if the character is a number (Number_* categories, not
我有一个qulonglong变量,我需要把它转换成QChar。 例如,从数字 65 我应该得到 'A'。 或者,如果有一种解决方案可以将其直接转换为 QString 也很好。 最佳答案 您需要的是 Q
我想将 QString 转换成文件名。因为我希望文件名看起来干净,所以我想用下划线替换所有非字母和非数字。以下代码应该可以做到这一点。 #include #include QString make
我需要将 QChar 转换为 wchar_t 我试过以下方法: #include #include #include using namespace std; int main(int argc
如何优雅的获取digits值? QChar qc('4'); int val=-1; if(qc.isDigit()){ val = qc.toLatin1() - '0'; } 看起来不太好。
在 C++ 中,有一种方法可以将 char 转换为 int 并返回 ascii 值。有没有一种方法可以对 qchar 执行相同的操作?由于 unicode 支持如此多的字符,并且其中一些实际上看起来很
#include #include int main(int argc, char *argv[]) { QCoreApplication a (argc, argv); unsi
我正在构建一个 Qt Gui 应用程序来监视来自串行端口的数据。我正在使用 qextserialport 库。这是我遇到的问题。 void MainWindow::onDataAvailable()
我正在研究解析器。我想逐个字符地解析文本文件。 bool parse(QString fileName, QString fieldTerminator,
我需要将 QChar 传递给需要 wchar_t 的函数: void myFunc(wchar_t wch); 尝试只传递 QChar 失败并出现错误: error: C2664: 'myFunc'
我需要从 QChar 获取 ASCII 代码。 在 Qt 5.2 中,QChar::ToAscii 已被删除。 这是我的代码。如何获取 ASCII 码? QString data; int key;
我想制作加密(稍后解密)用户输入的字符串的程序。这是加密的开始: QString getData = ui->text->toPlainText(); //Data to process std::s
在 Java 中,我能够使用 Unicode.blockOf(Character) 确定特定字符是否为日文汉字。我正在尝试为 QChar 做同样的事情,但找不到相关的功能来做到这一点。我想知道我是否只
我有一个应用程序应该处理各种字符,并在某些时候显示有关它们的信息。我在 QChar、QString 等中使用 Qt 及其固有的 Unicode 支持。 现在我需要 QChar 的代码点以便在 http
我正在尝试为 Code page 437 编写编解码器.我的计划是只传递 ASCII 字符并将剩余的 128 个字符映射到一个表中,使用 utf-16 值作为键。 对于某些组合字符(带点的字母、波浪号
可以告诉我为什么下面的代码会导致这个错误: call of overloaded 'QChar(const char[2])' is ambiguous 和代码: void func(QChar a
我正在研究 qt - 在《C++ GUI Programming With Qt 4》一书中,我试图让所有代码都能正常工作。我在将自定义表格小部件中的内容选择转换为纯文本时遇到问题。 书中现有代码:
我是一名优秀的程序员,十分优秀!