c++ 我在打印矢量数据时遇到问题

fiei3ece  于 2023-03-25  发布在  其他
关注(0)|答案(1)|浏览(91)

我有一个这样的程序。我试图cout的数据a[1],但它不工作,即使我仍然可以cout当使用for循环。请帮助我修复这个,谢谢。我的向量有不是空的。我不知道为什么。以下是我的代码:

#include <bits/stdc++.h>
using namespace std;
string s, s1, s2;
vector <string> a;
bool cmp(string x, string y){
        if(x.size()!=y.size()) return x.size() < y.size();
        else{
            for(int i=0; i<x.size(); i++){
                if(x[i]!=y[i]) return x[i]<y[i];
            }
        }

}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    cin >> s;
    s=s+' ';
    int i=0;
    while(i<s.length()){
        if(isdigit(s[i])){
            //a.push_back(s2);
            //s2="";
            s1+=s[i];
            i++;
        }
        else{
            //s2+=s[i];
            a.push_back(s1);
            s1="";
            i++;
        }
    }
    ;
    sort(a.begin(), a.end(), cmp);
    cout << a[1];
    //for(int x=0; x<a.size(); x++) cout << a[x];
    //int j = 0;
    cout << s[0];
    for(int x=1; x<s.size()-1; x++){
        /*if(isdigit(s[x])&&isdigit(s[x-1])==false){
            cout << a.front();
        }*/
        if(isdigit(s[x])==false) {cout << s[x];}
    }

    return 0;
}
eit6fx6z

eit6fx6z1#

当两个字符串具有相同的长度并且没有对应的元素不同时,您忘记了cmp()函数中的return内容。

bool cmp(string x, string y){
        if(x.size()!=y.size()) return x.size() < y.size();
        else{
            for(int i=0; i<x.size(); i++){
                if(x[i]!=y[i]) return x[i]<y[i];
            }
        }

        return false; // <-- add this
}

还要检查你的输入,记住cin>>运算符在空格处停止阅读。例如,你可以给予用逗号分隔的数据,如3,2,1,0

相关问题