C++解析文本文件数据至变量的最简方法及示例
最简C++(Qt)解析JSON文件方案
嘿,既然你提到了用QString存储变量,那直接用Qt自带的JSON解析模块就最省事了——不用额外引入第三方库,代码也够简洁。下面是完整的示例代码:
#include <QCoreApplication> #include <QFile> #include <QJsonDocument> #include <QJsonObject> #include <QString> #include <iostream> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 1. 读取目标文件内容 QFile file("parse_data.txt"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { std::cerr << "无法打开parse_data.txt文件" << std::endl; return 1; } QByteArray jsonData = file.readAll(); file.close(); // 2. 解析JSON格式数据 QJsonParseError parseError; QJsonDocument doc = QJsonDocument::fromJson(jsonData, &parseError); if (parseError.error != QJsonParseError::NoError) { std::cerr << "JSON解析出错: " << parseError.errorString().toStdString() << std::endl; return 1; } // 3. 提取字段到对应QString变量 QJsonObject obj = doc.object(); QString song = obj["song"].toString(); QString artist = obj["artist"].toString(); QString album = obj["Album"].toString(); // 注意原JSON键名是大写A开头 QString service = obj["Service"].toString(); // 可选:打印验证结果 std::cout << "歌曲名: " << song.toStdString() << std::endl; std::cout << "歌手: " << artist.toStdString() << std::endl; std::cout << "专辑: " << album.toStdString() << std::endl; std::cout << "平台: " << service.toStdString() << std::endl; return a.exec(); }
小提示:
- 确保你的Qt项目配置正确,在
.pro文件里加上QT += core来链接核心模块 - 提取字段时要严格匹配JSON里的键名(比如
Album和Service的大写开头别写错) - 如果不需要Qt的事件循环,也可以删掉
QCoreApplication相关代码,直接处理文件和解析逻辑
内容的提问来源于stack exchange,提问作者masko
相关产品推荐
相关产品推荐

