在zheng ()这个函数里第5行,我之前的写法是value[j] = str[i],结果输出value什么也没有,这是为什么啊
#include<iostream>
#include<string>
using namespace std;
int numb = 1;//1整数,2小数,3分数,4百分数
int sign;
void num(string a){
for(int i = 0; i < a.size(); i++){
if(a[i] == '.'){
numb = 2;
sign = i;
break;
}else if(a[i] == '/'){
numb = 3;
sign = i;
break;
}else if(a[i] == '%'){
numb = 4;
sign = i;
break;
}
}
}
string zheng(string str){//反转去开头0
int j = 0, cnt = 0;
string value;
for(int i = str.size() - 1; i >= 0; i--, j++){
value += str[i];//为什么写value[j] = str[i] 不行
}
for(int i = 0; i < j; i++){
if(value[i] == '0') cnt++;
else break;
}
if(cnt != 0 && cnt!= j) value.erase(0, cnt);
return value;
}
string xiao(string str){//反转去末尾0
int j = 0, cnt = 0;
string value;
for(int i = str.size() - 1; i >= 0; i--, j++){
value += str[i];
}
if(j == 1){
return value;
}else{
int i = 0;
for(i = j - 1; i >= 0; i--){
if(value[i] == '0') cnt++;
else break;
}
if(cnt != 0) value.erase(i+1, cnt);
return value;
}
}
int main(){
string s, ans;
cin >> s;
num(s);
if(numb == 1){
ans = zheng(s);
cout << ans;
}else if(numb == 2){
string qian, hou;
qian = s.substr(0, sign);
hou = s.substr(sign+1);
qian = zheng(qian);
hou = xiao(hou);
cout << qian << '.' << hou;
}else if(numb == 3){
string qian, hou;
qian = s.substr(0, sign);
hou = s.substr(sign+1);
qian = zheng(qian);
hou = zheng(hou);
cout << qian << '/' << hou;
}else if(numb == 4){
string qian;
qian = s.substr(0, sign);
qian = zheng(qian);
cout << qian << '%';
}
return 0;
}
后来我又写了个程序做实验(下方),单独把这里的代码摘了出来,仍旧是什么也不输出
#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
string value;
cin >> str;
int j = 0;
for(int i = str.size() - 1; i >= 0; i--, j++){
value[j] = str[i];
}
cout << value;
return 0;
}
是因为string类不能这么用吗?求大佬给个明确的解答