Code Bye

能帮小弟看看哪里错误了吗?

 

#include<iostream>
#include<string>
#include<cstring>
#include<cctype>
using namespace std;
string a(string &str);
int main(){
string str;
string s1;
getline(cin,str);
while(1)
{
if(str==”q” || str==”Q”)
{
break;
}
s1=a(str);
cout<<str<<endl;
getline(cin,str);
}
}
string a(string &str){
int i=0;
string s1;
int n=str.size();
while (i<n)
{
s1[i]=toupper(str[i]);
i++;
}
return s1;
}

在线等非常急
30分
修改如下:
string a(string str) {
	int i = 0;
	int n = str.size();
	while (i < n)
	{
		str[i] = toupper(str[i]);
		i++;
	}
	return str;
}
string s1;   // 这个字符串是空的 s1[i]非法引用了
s1.resize(n);
10分
引用 2 楼 zhangxiangDavaid 的回复:

修改如下:

string a(string str) {
	int i = 0;
	int n = str.size();
	while (i < n)
	{
		str[i] = toupper(str[i]);
		i++;
	}
	return str;
}

这位改的不错。

对,你函数里面的s1在这段函数结束后生命周期结束,传出一个未知的值,发生错误


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明能帮小弟看看哪里错误了吗?