c++ - 相同的代码和不同的结果

标签 c++ qt

我想问你为什么这两个代码彼此不等价?

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

最佳答案

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

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

关于c++ - 相同的代码和不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16360540/

相关文章:

qt - 服务器 QTcpSocket "breaks"太快了,客户端没有收到所有数据,知道为什么吗?

c++ - Autotools:包括预建的第 3 方库

c++ - 使用 Boost C++ 为嵌套标签解析 xml

c++ - 在特征模板中声明静态自动函数指针

c++ - 为什么 std::string 没有保留构造函数?

c++ - Qt 调试器控制台看不到调试 session

c++ - 是否有可能获得一个模板来使用一个类和该类的一个成员函数?

c++ - 在构造函数中迭代 QTableWidget 单元格?

c++ - 无法读取外部类型和资源系统的文件

java - c++在对象声明中分配对象