两个格式转换函数
将如"[1,2,3]"的一维数组字符串(长度不必指定)转换为的vector
vector<int> str2vec(string str) {
if(str.size()<2)return {};
str.pop_back();
str.erase(str.begin());
vector<int> v;
istringstream is(str);
string temp;
while (getline(is, temp, ',')) {
v.push_back(stoi(temp));
}
return v;
}
将如"[[1,2,3],[4,5,6]"的二维数组字符串(长度不必指定)字符串转换为二维vector
vector<vector<int>> str2vec2(string str) {
if(str.size()<2)return {};
str.pop_back();
str.erase(str.begin());
vector<vector<int>> res;
string tmp;
regex pattern(R"(\[([\d+,]+[\d+]*)\],*(.*))");
regex vpat(R"(\d+)");
smatch results;
int i;
while (!str.empty()) {
if (regex_match(str, results, pattern)) {
i = 0;
for (auto it = results.begin(); it != results.end()&&i<=2; ++it, ++i) {
if (i == 1) {
tmp = *it;
} else if (i == 2) {
str = *it;
}
}
vector<int> v;
if (!tmp.empty()) {
istringstream is(tmp);
string temp;
while (getline(is, temp, ',')) {
v.push_back(stoi(temp));
}
res.emplace_back(v);
}
}
}
return res;
}