【发布时间】:2022-07-13 23:53:21
【问题描述】:
我想将字符串从全部或部分小写或大写转换为全部大写或小写。当我在没有类或函数的情况下使用 toupper() 和 tolower() 时,它可以正常工作,但是当我在类和函数中使用时,它不会将字符串转换为全部小写或大写。这里是代码:
#include <iostream>
#include <algorithm>
using namespace std;
class Convert
{
public:
string tolowercase(string sentence);
string touppercase(string sentence);
};
int main()
{
Convert convert;
string sentence = "I used to be here";
cout<< sentence << endl;
convert.tolowercase(sentence);
cout << sentence << endl;
return 0;
}
string Convert::tolowercase(string sentence)
{
for (int i = 0; i < sentence.length(); i++)
{
sentence[i] = tolower(sentence[i]);
}
return sentence;
}
string Convert::touppercase(string sentence)
{
for (int i = 0; i < sentence.length(); i++)
{
sentence[i] = toupper(sentence[i]);
}
return sentence;
}
【问题讨论】:
-
您正在丢失返回的值。
sentence = convert.tolowercase(sentence); -
要么更改为
sentence = convert.tolowercase(sentence),要么通过引用将sentence带入函数中。 -
这是了解按值传递和按引用传递之间区别的最佳时机。
标签: c++ string class uppercase lowercase