2013-07-03 76 views
0

我正在使用qstring并使用函数toStdString()。当我做这个,我失去了一个减号:qt qstring toStdString减号减号

'332-_09I_W' 

这个文本变成:

'332_09I_W' 

我能做些什么来防止这种情况?

编辑:其实,问题不是当我使用toStdString(),它是当我在我的qTextEdit中设置文本。变化发生在这里:

myTextEdit->setHtml(myString); 
+1

(它传递给setHtml()之前)我写:'QString的QS( “332-_09I_W”); std :: string ss = qs.toStdString(); cout << ss << endl;'并且输出正常。 – asclepix

+0

是的,对不起,我发现那不是我遇到的问题。感谢您对此进行调查以再次检查我。 – user1216527

+0

这不是一个真正的HTML字符串,是吗? –

回答

0

我已经试过:

QString qs("332-_091_W"); 
std::string st = qs.toStdString(); 
ui->textEdit->setHtml(st.c_str()); 

它使没有问题的我。你使用的是哪个版本的Qt?

然而,从文档:

setHtml()改变文本编辑的文本。任何以前的文本都将被删除 并清除撤销/重做历史记录。输入文本是 ,解释为HTML格式的富文本。 注意:调用者有责任确保在创建包含HTML的QString 并将其传递给setHtml()时正确解码文本。

减号/连字符符号在HTML暧昧,试图改变它的QString的与&minus;

+0

嘿感谢您的反馈!这不是一个常见的连字符/减号,我有问题。这是软连字符(Unicode的U + 00AD)。如果您在Unicode到Microsoft Word类型,选中它然后按Alt + X,你会看到我试图在Qt的4.7.4任何行编辑到显示的字符。 – user1216527

+0

这是当我使用的setText和setHtml – user1216527

+0

“­”这似乎是一个奇怪的角色的情况下...我不能看到它在许多应用程序。如果可以,请更改符号。 – asclepix