在 C++ [QT] 中将数字和标准字符串解析为 char*
Posted
技术标签:
【中文标题】在 C++ [QT] 中将数字和标准字符串解析为 char*【英文标题】:Parsing numbers and stdStrings to char* in C++ [QT] 【发布时间】: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
字符串的工作原理吗?
【参考方案1】:
1) 我可以看到您没有为向量分配内存。
例子:
for (int i = 0; i < 10; i++)
int size = 10; // allocate size how much you required
vector[i] = (char*) malloc(size);
memset(vector[i], 0, size);
2) 要将 QString 中的数字转换为 char *,您可以使用以下代码:
例子:
strcpy(vector[1], ui->lineEdit_3->text().toStdString().c_str());
注意:要将数字转换为字节数组,您需要使用不同的方法。
【讨论】:
以上是关于在 C++ [QT] 中将数字和标准字符串解析为 char*的主要内容,如果未能解决你的问题,请参考以下文章