Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转换字符串大小写的函数? C++中有一个函数将字符串从小写转换成大写,反之亦然?我需要比较两个不区分大小写的字符串,我只能转换其中一个字符串,而另一个字符串需要完整。_C++_String - Fatal编程技术网

转换字符串大小写的函数? C++中有一个函数将字符串从小写转换成大写,反之亦然?我需要比较两个不区分大小写的字符串,我只能转换其中一个字符串,而另一个字符串需要完整。

转换字符串大小写的函数? C++中有一个函数将字符串从小写转换成大写,反之亦然?我需要比较两个不区分大小写的字符串,我只能转换其中一个字符串,而另一个字符串需要完整。,c++,string,C++,String,您可以使用或与std::for_each结合使用 在调用std::equal之前,您可能必须检查字符串的长度是否相同,您可以使用或与std::for_each结合使用 在调用std::equal可以与或一起使用之前,您可能必须检查字符串的长度是否相同 可以与或一起使用 您可以使用: std::tolower和std::toupper与std::transform 推进,如 正如您在问题中所建议的,只需遍历字符串。要转换字符串中的每个字符,必须以anway的方式对其进行迭代 您可以使用: st

您可以使用或与
std::for_each
结合使用

在调用
std::equal

之前,您可能必须检查字符串的长度是否相同,您可以使用或与
std::for_each
结合使用

在调用
std::equal

可以与或一起使用之前,您可能必须检查字符串的长度是否相同

可以与或一起使用

您可以使用:

  • std::tolower
    std::toupper
    std::transform
  • 推进,如
  • 正如您在问题中所建议的,只需遍历字符串。要转换字符串中的每个字符,必须以anway的方式对其进行迭代
您可以使用:

  • std::tolower
    std::toupper
    std::transform
  • 推进,如
  • 正如您在问题中所建议的,只需遍历字符串。要转换字符串中的每个字符,必须以anway的方式对其进行迭代

你的意思是
std::string
还是
char*
字符串?10个字符不是“大量的转换工作”。@Rapptz他展开循环。@PeterWood是的,你是对的,一个不区分大小写的比较。正如Peter的评论所暗示的,大写然后比较通常与不区分大小写的比较不同。这对于您的用例来说可能已经足够了,因为这似乎是一些学校作业,但我认为值得指出。您是指
std::string
还是
char*
string?10个字符并不是“需要大量转换的工作”。@Rapptz他展开了循环。@PeterWood是的,您是对的,一个不区分大小写的比较。正如Peter的评论所暗示的,大写字母然后进行比较通常与不区分大小写的比较不同。这对于您的用例来说可能已经足够了,因为这似乎是一些学校作业,但我认为值得指出。什么是s.begin(),s.end()。s、 begin()?添加更多代码,这是string@MokammelHossainSanju:如果你问这个问题,很明显,您没有阅读标记的副本,如果您没有阅读,您怎么能说它没有帮助?@billz实际上是一些字符串,我必须与字符串用户输入进行比较。@MokammelHossainSanju如果您有这些限制,您应该在问题中明确指定。否则,您不可能得到对您的特定领域有用的答案。什么是s.begin()、s.end()。s、 begin()?添加更多代码,这是string@MokammelHossainSanju:如果你问这个问题,很明显,您没有阅读标记的副本,如果您没有阅读,您怎么能说它没有帮助?@billz实际上是一些字符串,我必须与字符串用户输入进行比较。@MokammelHossainSanju如果您有这些限制,您应该在问题中明确指定。否则,您不可能得到对您的特定领域有用的答案。
#include <cctype>
#include <algorithm>
#include <string>
#include <iostream>

int main()
{
  std::string s = "Hello, World!";
  std::transform(s.begin(), s.end(), s.begin(), [](char c) {return std::toupper(c);});
  std::cout << s << "\n";
}
bool case_insensitive_comp(char lhs, char rhs)
{
  return std::toupper(lhs) == std::toupper(rhs);
}

int main()
{
  std::string s1 = ....;
  std::string s2 = ....;
  bool match = std::equal(s1.begin(), s1.end(), s2.begin(), case_insensitive_comp); 
}
std::string s("hello, world!");
std::transform(s.begin(), s.end(), s.begin(), (int (*)(int))std::toupper);