{"code":100,"errormessage":null,"data":"{\"total\":0,\"rows\"}"} C++ 正则表达式取data值
时间: 2023-09-02 07:05:44 浏览: 107
假设你已经将 JSON 字符串存储在一个名为 `jsonStr` 的字符串变量中,可以使用 C++11 引入的正则表达式库 `std::regex` 和 `std::smatch` 来提取 `data` 字段的值。
以下是示例代码:
```c++
#include <iostream>
#include <regex>
#include <string>
int main() {
std::string jsonStr = R"({"code":100,"errormessage":null,"data":"{\"total\":0,\"rows\"}"})";
std::regex dataRegex(R"("data":(".*"))");
std::smatch match;
if (std::regex_search(jsonStr, match, dataRegex)) {
std::string dataStr = match[1].str();
std::cout << "data: " << dataStr << '\n';
} else {
std::cout << "data field not found\n";
}
return 0;
}
```
运行结果:
```
data: "{\"total\":0,\"rows\"}"
```
相关问题
{"code":100,"errormessage":null,"data":"{\"total\":0,\"rows\"}” C++ 正则取data值
这是一个 JSON 格式的字符串,你可以使用 C++ 的第三方库来解析 JSON,并获取其中的 data 值。
以下是使用 RapidJSON 库的示例代码:
```cpp
#include <iostream>
#include "rapidjson/document.h"
using namespace rapidjson;
int main() {
std::string jsonStr = R"({"code":100,"errormessage":null,"data":"{\"total\":0,\"rows\"}"})";
Document doc;
doc.Parse(jsonStr.c_str());
if (!doc.HasParseError() && doc.HasMember("data") && doc["data"].IsString()) {
std::cout << doc["data"].GetString() << std::endl; // 输出 {"total":0,"rows"}
}
return 0;
}
```
另外,如果你的 JSON 字符串格式比较固定,也可以使用正则表达式将 data 值提取出来。以下是一个使用正则表达式的示例代码:
```cpp
#include <iostream>
#include <regex>
int main() {
std::string jsonStr = R"({"code":100,"errormessage":null,"data":"{\"total\":0,\"rows\"}"})";
std::regex reg(R"("data":"(.+?)")");
std::smatch match;
if (std::regex_search(jsonStr, match, reg)) {
std::cout << match[1].str() << std::endl; // 输出 {"total":0,"rows"}
}
return 0;
}
```
这里使用了 C++11 引入的正则表达式库,需要在编译时加上 `-std=c++11` 或更高的选项。
阅读全文