我使用以下代码行分配com端口:

const wchar_t* mccommport = L"COM5";


如果需要使用的话,我可以打电话给mccommport。这很完美。但是,我现在想从标签中拉出要使用的COM端口。我怎样才能做到这一点?换一种说法:

QString mccommport_string = ui->label_commport->text(); //Value here is COM5
const wchar_t* mccommport = mccommport_string ; //????? obviously this doesn't work.


我该如何完成以上工作?

我尝试了以下操作,但未成功:

wchar_t array[5];
QString mccommport_string = "COM5"
mccommport_string.toWCharArray(array);
const wchar_t* mccommport = array;
const wchar_t* mccommport2 = L"COM5";
qDebug() << mccommport_string << mccommport << mccommport2;


它提供的qDebug输出为:

"COM5" 0x15cd542 0xe814a2


如果我尝试使用mccommport2与串行端口通信,则可以使用,如果我尝试使用mccommport,则无法使用。我是C ++的新手,所以不确定这些是否应该相同...任何帮助将不胜感激。

最佳答案

QString数据放入const wchar_t*的更简单方法是使用toStdWString()方法:

QString mccommport_string = "COM5";
std::wstring com5_str(mccommport_string.toStdWString());

const wchar_t* mccommport = com5_str.c_str();



  L在“ COM5”前面做什么?


它表示wide string literal

关于c++ - 在C++中将值从String输入到wchar变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41490718/

10-12 14:51