gpt4 book ai didi

c++ - 如何在 if 语句 C++ 中将字符串转换为较低的字符串

转载 作者:行者123 更新时间:2023-11-30 02:18:15 25 4
gpt4 key购买 nike

像这样:

if (string.toLower() == "string") {
cout << "output";
}

我试过使用:transform(input.begin(), input.end(), input.begin(), toupper);没有结果。

最佳答案

确实可以使用std::tolower()std::transform()为了达成这个。例如:

#include <string>
#include <algorithm>
#include <cctype>
#include <iostream>

std::string to_lower(const std::string& s) {
std::string lower{s};
std::transform(lower.begin(), lower.end(), lower.begin(),
[](unsigned char c){ return std::tolower(c); });
return lower;
}

int main()
{
std::string str{"UPPER_CASE"};

if (to_lower(str) == "upper_case")
std::cout << "String matched.";

return 0;
}

输出:

String matched.

Note here对于 std::tolower(int ch):“如果 ch 的值不能表示为 unsigned char 并且不等于 EOF,行为未定义”。因此,lambdaunsigned char 作为 std::transform 的第四个参数。

另请注意 upon NRVO for callsto_lower(),如果发生这种优化,则不会复制额外的 std::string —— 除了保存小写版本所需的单个之外。

关于c++ - 如何在 if 语句 C++ 中将字符串转换为较低的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52449241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com