我有一个这样的程序。我试图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;
}
1条答案
按热度按时间eit6fx6z1#
当两个字符串具有相同的长度并且没有对应的元素不同时,您忘记了
cmp()
函数中的return
内容。还要检查你的输入,记住
cin
的>>
运算符在空格处停止阅读。例如,你可以给予用逗号分隔的数据,如3,2,1,0
。