无法更改QString中的整数

时间:2017-05-23 14:51:08

标签: qt

我有QString strLayout,其值为"3,1,0"

我想将其更改为“ 2,1,0 ”。

所以我提取了第一个字符,转换为数字并从中减去1:

int temp = (strLayout.at(0).digitValue() - 1);

现在,我希望它回写原始QString strLayout,如下所示:

strLayout[0] = temp;

问题是这不会将第一个字符替换为2

提前致谢!

1 个答案:

答案 0 :(得分:0)

您的代码存在的问题是数字2与字符'2'之间的差异,根据ASCII编码,该字符与50相对应。

strLayout[0] = temp;会将数字temp2)重新解释为编码为2的字符,即表示Start of Text的特殊字符。

存在三种解决方案:

  • 将整数转换回字符串:

    strLayout[0] = QString::number(temp)[0];
    
  • 不要将您的角色转换为整数:

    strLayout[0] = strLayout.at(0) - 1;
    

    这个技巧有效,因为ASCII字符集将数字编码为连续保持正常顺序(数字0-9对应48-57 ASCII值)

  • 将整数转换回字符

    strLayout[0] = temp + '0';
    

    这会将temp

  • 的ASCII值加到整数0