【发布时间】:2014-07-31 04:09:59
【问题描述】:
我有这段代码,其中audio_bitRate & video_bitRate 是数字,audio_address & video_address 是字符串。
我从我的 Qt 界面获取这些变量,但我不知道当我尝试将这些变量解析为我的 char *vector[10] 时会发生什么,我做错了什么?
提前致谢。
int counter = 0;
char *vector[10];
memset(vector, 0, 10);
qDebug() << counter;
audio_address = ui->lineEdit->text().toStdString();
video_address = ui->lineEdit_2->text().toStdString();
audio_bitRate = ui->lineEdit_3->text().toDouble();
video_bitRate = ui->lineEdit_4->text().toDouble();
qDebug() << audio_bitRate;
qDebug() << video_bitRate;
pat_bitRate = ui->lineEdit_6->text().toDouble();
pmt_bitRate = ui->lineEdit_7->text().toDouble();
ewbs_bitRate = ui->lineEdit_8->text().toDouble();
qDebug() << "00";
//The problem is here
strcpy(vector[0], (char*)(&audio_bitRate));
strcpy(vector[1],(char*)(&audio_address));
strcpy(vector[2], (char*)(&video_bitRate));
strcpy(vector[3],(char*)(&video_address));
在这部分我的应用程序完成后,QT 命令行的确切消息是 `
“程序意外结束。”
【问题讨论】:
-
char *vector[10];这是一个指向char的指针数组,但这些指针并不指向任何地方。 -
audio_bitRate和audio_adress实际上是什么,因为您可能不应该这样做:(char*)(&x)到int,当然不应该是std::string -
@Ben 根据文档,
.toStdString()返回std::string对象,.toDouble()返回转换为double值的string。我像这样在代码中定义了变量using namespace std; string audio_address; double audio_bitRate; string video_address; double video_bitRate; -
@user657267 我使用
memset(vector, 0, 10);来初始化我的向量,但是我遇到了同样的错误。 -
@Ita 现在你有了一个空指针数组。你确定你了解指针和
char字符串的工作原理吗?