相同的代码和不同的结果

时间:2013-05-03 13:51:44

标签: c++ qt

我想问你为什么这2个代码彼此不相同?

没有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]);
}

1 个答案:

答案 0 :(得分: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]);
}

如果你的程序有不明确的行为,他们会做一些奇怪的事情,比如在一种情况下工作但在另一种情况下不工作。