写出了不清楚原理的错误,求大佬解释
查看原帖
写出了不清楚原理的错误,求大佬解释
508589
ginkgo_tree楼主2022/1/30 14:04

在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类不能这么用吗?求大佬给个明确的解答

2022/1/30 14:04
加载中...