我试图将字符串转换为小写,并将其视为char *并遍历每个索引。问题是我在网上阅读的tolower函数实际上并未将char转换为小写字母:它将char作为输入并返回一个整数。

cout << tolower('T') << endl;

当应该打印116时,将T打印到控制台。

我有更好的方法将字符串转换为小写吗?
我在网上四处看看,大多数消息人士说“使用tolower并遍历char数组”,这似乎对我不起作用。

所以我的两个问题是:
  • 我调用tolower
  • 时使tolower('T')函数返回116而不是't'的原因是什么?
  • 除了在每个单独的字符上使用tolower之外,还有更好的方法将C++中的字符串转换为小写吗?
  • 最佳答案

    那是因为有两个不同的tolower函数。您正在使用的是this one,它返回一个int。这就是为什么要打印116。这是't'的ASCII值。如果要打印char,可以将其转换回char

    另外,您可以使用this one,它实际上返回您希望其返回的类型:

    std::cout << std::tolower('T', std::locale()); // prints t
    

    针对您的第二个问题:



    不。

    关于c++ - 在C++中将单个字符转换为小写-tolower返回一个整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33849637/

    10-09 08:56