目录
输入字符串
String s;
cin >> s;
字符串输入后转化为int型容器
string input;
getline(cin, input);//[1,8,6,2,5,4,8,3,7]
input = input.substr(1, input.length() - 2); // Remove square brackets
istringstream iss(input);
vector<int> nums;
string numStr;
while (getline(iss, numStr, ',')) {
nums.push_back(stoi(numStr));
}
模板
vector<int> split(string params_str) {
vector<int> p;
while (params_str.find(",") != string::npos) {
int found = params_str.find(",");
p.push_back(stoi(params_str.substr(0, found)));
params_str = params_str.substr(found + 1);
}
p.push_back(stoi(params_str));
return p;
}
vector<string> split_str(string params_str) {
vector<string> p;
while (params_str.find(",") != string::npos) {
int found = params_str.find(",");
p.push_back((params_str.substr(0, found)));
params_str = params_str.substr(found + 1);
}
p.push_back((params_str));
return p;
}
输入数字
int num;
cin >> num;
输入字符串数组
int n;
cin >> n; // 读取数组长度n
string input;
cin.ignore(); // 忽略前一个输入的换行符
getline(cin, input); // 读取整行输入
vector<string> lst;
stringstream ss(input); // 使用字符串流进行处理
string token;
while (getline(ss, token, ' ')) { // 使用空格分割字符串
lst.push_back(token);
}
带[ ]字符串输入转为vector
比如输入:[-1,0,1,2,-1,-4]
string input;
getline(cin, input);//[-1,0,1,2,-1,-4]
input = input.substr(1, input.length() - 2);
istringstream iss(input);
vector<int> nums;
string numStr;
while (getline(iss, numStr, ',')) {
nums.push_back(stoi(numStr));
}
带[ ]二维字符串输入转为二维vector
比如输入:[1,2,3], [1,1]
vector<int> split(string params_str) {
vector<int> p;
while (params_str.find(",") != string::npos) {
int found = params_str.find(",");
p.push_back(stoi(params_str.substr(0, found)));
params_str = params_str.substr(found + 1);
}
p.push_back(stoi(params_str));
return p;
}
vector<vector<int>> v;
vector<int> p;
vector<vector<int>> split_2_dimention(string s) {
s += " ";//防止最后一个]后面没有元素所导致的越界
while (s.find("]") != string::npos) {
int found_right = s.find("]");
string s1 = s.substr(1, found_right - 1);
p = split(s1);
v.push_back(p);
s = s.substr(found_right + 2);//取第二个vector,这里可能会越界
p.clear();
}
return v;
}
输入数字型数组
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
或者(可以用于处理数组长度n
未知的输入)
vector<int> nums;
while (cin >> num) {
nums.push_back(num);
}
输入二维数组
字符串类型输入
int n, m;
cin >> n >> m;
vector<string> maze(n);
for (int i = 0; i < n; i++) {
cin >> maze[i];
}
数字类型输入
int n, m;
cin >> n >> m;
vector<vector<int>> maze(n, vector<int>(m, 0));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> maze[i][j];
}
}
输出
将vector的元素输出,有[ ]
比如输出:[1,2]
result = a.twoSum(nums,target);
string output = "";
for (int x:result) {
output += to_string(x) + ',';
}
cout << "[" << output.substr(0, output.size() - 1) << "]";
vector<vector<int>>输出,有[ ]
比如输出:[[-1,-1,2],[-1,0,1]]
Solution a;
vector<vector<int>> result;
string output = "";
string output_end = "";
result = a.threeSum(nums);
for (int i = 0; i < result.size(); i++) {
for (auto x : result[i]) {
output += to_string(x) + ',';
}
output_end += "[" + output.substr(0, output.size() - 1) + "]" + ',';
output.clear();//下一组的vector元素加进来之前,要把上次的output清空,不然该组的vector元素会包含上一组的所有元素;
}
cout << "[" << output_end.substr(0, output_end.size() - 1) << "]";//[[-1,-1,2],[-1,0,1]]