0%

C++中的字符串转数组

Input:

1
[[1,2,3][11,12,13]]

belike

1
2
A = 1  2  3
11 12 13

1. istringstream

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<sstream>
#include<iostream>
#include<vector>
#include<string>
using namespace std;

vector<vector<int>> result;
string line = input;
string current;

// 去掉最外层括号
for (auto &c : line) {
if (c == '[' || c == ']')
current += c; // 保留括号来分隔
else if (c == ',')
current += ' '; // 用空格替换逗号
else
current += c;
}
istringstream iss(current);
string token;
while (iss >> token) {
if (token[0] == '[') {
vector<int> row;
while (iss >> token && token[0] != ']') {
row.push_back(stoi(token));
}
result.push_back(row);
}
}

2. auto i:line

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
#include<vector>
using namespace std;

string line;
getline(cin,line);

vector<vector<int>>nums;
vector<int>row;
int num=0;
for(auto i:line){
if(isdigit(i)){
num=num*10+i;
}
else {
row.push_back(num);
num=0;
if(i==']'){
nums.push_back(row);
row.clean();
}
}
}
欢迎打赏