2013-07-03 74 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