gpt4 book ai didi

c++ - Qt 程序与另一个编译器崩溃

转载 作者:行者123 更新时间:2023-11-30 00:53:28 26 4
gpt4 key购买 nike

谁能告诉我这部分代码有什么问题?它在执行期间崩溃。

void MainWindow::on_pushButton_clicked()
{
char * cstr = new char [ui->lineEdit->text().length()];
string costam;
costam=ui->lineEdit->text().toStdString();
strcpy(cstr, costam.c_str()); <<<----TROUBLE LINE
int z;
z=costam.length();
for(int n=0;n<z;n++){
string wynik;
wynik=konwersja(cstr[n]);
mors(wynik);
Sleep(300);
}
delete[] cstr;
}

当我尝试在 Qt 5.0.1 中使用 MinGW 编译它时,一切正常,但在 Qt 4.8.1 中使用 MSVC2010 时出现警告:

warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

最佳答案

你的问题是错误的。这段代码可以编译,这里没有关于 QT 的内容。

strcpy 已弃用,因为它不安全。替代方法是 strcpy_s:

strcpy_s( cstr, ui->lineEdit->text().length() + 1, costam.c_str() );

请注意,您应该分配 ui->lineEdit->text().length() + 1,而不是 ui->lineEdit->text().length()。我猜这就是崩溃的原因。

顺便说一句,我认为根本没有理由在您的代码中使用 cstr 数组。例如:

void MainWindow::on_pushButton_clicked() {
string costam;
costam = ui->lineEdit->text().toStdString();
for( size_t n = 0; n < costam.length(); n++ ) {
string wynik;
wynik = konwersja( costam[ n ] );
mors( wynik );
Sleep( 300 );
}
}

关于c++ - Qt 程序与另一个编译器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16285183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com