gpt4 book ai didi

c++ - 解析字符串并替换

转载 作者:行者123 更新时间:2023-12-03 18:53:36 24 4
gpt4 key购买 nike

我如何将此 javascript 代码转换为 C++

key = {"|1|":"A","|2|":"B","|4|":"C","|3|":"D"}

y = "|1||2||3||4|"

for (i in key)
y = y.replace(i,key[i])

console.log(y)
输出: ABDC我在 std::string 中得到了“解码 key ”,例如:
  std::string key = "{\"|1|\":\"A\",\"|2|\":\"B\",\"|3|\":\"D\",\"|4|\":\"C\"}";
根据此键的属性,在 my_string 中进行字符串替换。
例子:
std::string key = "{\"|1|\":\"A\",\"|2|\":\"B\",\"|3|\":\"D\",\"|4|\":\"C\"}";

std::string my_string = "|1||2||3||4|";
// . . .

my_string |1| 替换为 A|2| 替换为 B|3| 替换为 D|4| 替换为 C |1|A|2|B ...等来自 std::string key那么 my_string 现在是 ABDC
我需要将 std:: string key 转换为另一种数据类型吗?我的意思是类似于 javascript 上的对象,我不熟悉 C++。

最佳答案

java 字典的等价物是 map 或 unordered_map
至于你的json问题,你需要一个库来解析json,我推荐excellent one from Professor Lemire (github lemire)
我刚刚为你写了一个简单的 json 解析器。请注意,您需要使用 c++1z 进行编译,否则您将收到警告:decomposition declaration only available with -std=c++1z or -std=gnu++1zg++ -std=c++1z test.cpp && ./a.out

#include <unordered_map>
#include <iostream>
#include <sstream>

using namespace std;

void jsonDecode(unordered_map <string, char> &m, string s) {
constexpr char delimiter = '"';
for (int i = 0; i < s.size(); ) {
if (s[i++] == delimiter) {
stringstream ss;
while (s[i] != delimiter)
ss << s[i++];
string key = ss.str();
++i;
while (s[i] != delimiter) i++;
char value = s[++i];
m[key] = value;
i+=2;
}
}
}

int main(void) {
unordered_map <string, char> m;
string s = R"({"|1|":"A","|2|":"B","|3|":"D","|4|":"C"})";
jsonDecode(m, s);
string y = "|1||2||3||4|";

for (auto &[k,v] : m)
y.replace(y.find(k), k.size(), string(1, v));

cout << y << endl;
return 0;
}
输出:
ABDC
您可以阅读有关 replace method here 的信息

关于c++ - 解析字符串并替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66393205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com