【问题标题】:toupper() and tolower() doesn't convert string into uppercase or lowercase in class c++toupper() 和 tolower() 不会在 C++ 类中将字符串转换为大写或小写
【发布时间】: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


【解决方案1】:

您应该捕获convert.tolowercase(sentence); 的返回值(转换结果),而不是将其丢弃。

换句话说,这条线

convert.tolowercase(sentence);

应该是:

sentence = convert.tolowercase(sentence);

【讨论】:

    猜你喜欢
    • 2020-12-11
    • 2011-07-15
    • 2013-12-17
    • 1970-01-01
    • 2021-06-11
    • 2017-05-18
    • 2016-01-22
    • 2018-09-07
    • 1970-01-01
    相关资源
    最近更新 更多