2013-05-03 98 views
1

我想問你爲什麼這兩個代碼不相等?相同的代碼和不同的結果

沒有GUI正常工作:

string str; cin >> str; 

for(int n=0;n<=str.length();n++){ 
    string total; 
    total=conversion(str[n]); 
} 

...但是GUI(QT)在轉換函數的輸出出現隨機字符:

string str = ui->lineEdit->text().toStdString(); 

for(size_t n = 0; n <= str.length(); n++) { 
string total; 
total= conversion(str[n]); 
} 
+0

你可以顯示你得到的任何輸出(以及你正在打印這個輸出的地方)嗎? – 2013-05-03 13:53:08

+0

你是否驗證過ui-> lineEdit-> text()。toStdString()實際上返回了一些有意義的東西? – Angew 2013-05-03 13:53:45

回答

6
for(int n=0;n<=str.length();n++){ 
    string total; 
    total=conversion(str[n]); 
} 

是因爲未定義行爲str的出境限制訪問,您需要

for(int n=0;n<str.length();n++){ 
    string total; 
    total=conversion(str[n]); 
} 

如果你的程序有不確定的行爲,他們會做一些奇怪的事情,比如在一種情況下工作,但不在另一種情況下工作。

+0

你忘了鼻子守護進程 – Gui13 2013-05-03 14:07:42

+0

約翰你的想法不會改變任何東西,我已經用該方法打印輸出:QString qstr = QString :: fromStdString(total); QMessageBox msgBox; msgBox.setText(qstr); msgBox.exec();輸出結果:èÿÜûÿYèHGüÿÈ – withorlo 2013-05-03 14:33:10

+0

那麼也許是'轉換'中的一個bug。這是一個錯誤*某處*。 – john 2013-05-03 14:41:01

相關問題