在 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_bitRateaudio_adress 实际上是什么,因为您可能不应该这样做:(char*)(&amp;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*的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中将数字转换为字符串,反之亦然

如何在 C++ 中将数字字符串拆分为数组? [复制]

在 Windows C++ 中将字符串解析为日期的区域感知

在 C++ 中将数字转换为字符串的最佳方法? [复制]

如何在 C++ 中将数字字符串转换为 int 数组 [重复]

在 Qt 4.7 中将标准输出管道传输到 QLabel