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

1 回答 1

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

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

于 2013-05-03T13:53:03.417 回答