ACM模式输入输出总结

目录

输入字符串

字符串输入后转化为int型容器

模板

输入数字

输入字符串数组

带[ ]字符串输入转为vector 

带[ ]二维字符串输入转为二维vector

输入数字型数组

输入二维数组

字符串类型输入

数字类型输入

输出

将vector的元素输出,有[ ]

vector>输出,有[ ]


输入字符串

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]]

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值