gpt4 book ai didi

c++ - 构建 QString 输出字符串

转载 作者:行者123 更新时间:2023-11-27 22:48:22 25 4
gpt4 key购买 nike

使用以下代码:

QString msg;
msg = "Datalogging Item" + ',' +
QString::number(item) + ',' +
"Slave Index" + ',' +
QString::number(slaveIndex) + ',' +
"Slave Name" + ',' +
slaveName + ',' +
"Experiment Index" + ',' +
QString::number(expIndex) + ',' +
"Experiment Name" + ',' +
expName + ',' +
"Aquisition Frequency " + ',' +
"33 Hz" + "\n";
qDebug() << msg;

我得到了以下调试输出

"riment Index0,Slave Index,0,Slave Name,Execute 1,Experiment Index,0,Experiment Name,Read All (Barebone),Aquisition Frequency ,33 Hz\n"

这并不是我期望得到的。

但是使用 QString 类型转换修改的代码:

QString msg;
msg = QString("Datalogging Item") + QString(',') +
QString::number(item) + QString(',') +
QString("Slave Index") + QString(',') +
QString::number(slaveIndex) + QString(',') +
QString("Slave Name") + QString(',') +
slaveName + QString(',') +
QString("Experiment Index") + QString(',') +
QString::number(expIndex) + QString(',') +
QString("Experiment Name") + QString(',') +
expName + QString(',') +
QString("Aquisition Frequency ")+ QString(',') +
QString("33 Hz") + QString("\n");
qDebug() << msg;

我得到了我期望得到的:

"Datalogging Item,0,Slave Index,0,Slave Name,Execute 1,Experiment Index,0,Experiment Name,Read All (Barebone),Aquisition Frequency ,33 Hz\n"

你知道发生了什么事吗?我只是不明白发生了什么,而且我是 QT 的新手。

谢谢。

最佳答案

您可以更简单地重现相似的结果:

 msg =   "Datalogging Item" + ',' +  QString::number(item);

现在恰好是问题所在。该表达式的第一部分很简单:

"Datalogging Item" + ','

在上面的表达式中,原始字符串文字将整数值 44(逗号的 ascii val)添加到它的指针地址。因此,您现在处于“未定义”区域,因为 “Datalogging Item” 的长度远小于 44 个字符。最有可能发生的事情是,上面的表达式现在是一个指向附近定义的其他字符串文字中间的指针表达式。

解决方案是简单地将第一个元素声明为QString,以便所有后续“添加”都将使用QString 的重载+ 运算符:

msg =   QString("Datalogging Item") + ',' +
QString::number(item) + ',' +
...

关于c++ - 构建 QString 输出字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40711445/

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