我有QString strLayout
,其值为"3,1,0"
。
我想将其更改为“ 2,1,0 ”。
所以我提取了第一个字符,转换为数字并从中减去1:
int temp = (strLayout.at(0).digitValue() - 1);
现在,我希望它回写原始QString strLayout
,如下所示:
strLayout[0] = temp;
问题是这不会将第一个字符替换为2
。
提前致谢!
答案 0 :(得分:0)
您的代码存在的问题是数字2
与字符'2'
之间的差异,根据ASCII编码,该字符与50
相对应。
strLayout[0] = temp;
会将数字temp
(2
)重新解释为编码为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
0