【发布时间】:2012-02-29 06:34:19
【问题描述】:
我知道有一些方法可以进行大小写忽略比较,其中涉及遍历字符串或一个 good one 上的 SO 需要另一个库。我需要把它放在其他可能没有安装它的计算机上。有没有办法使用标准库来做到这一点?现在我只是在做......
if (foo == "Bar" || foo == "bar")
{
cout << "foo is bar" << endl;
}
else if (foo == "Stack Overflow" || foo == "stack Overflow" || foo == "Stack overflow" || foo == "etc.")
{
cout << "I am too lazy to do the whole thing..." << endl;
}
这可以极大地提高我的代码的可读性和可用性。感谢您阅读本文。
【问题讨论】:
-
认真的吗?即使没有内置方法,您也可以轻松编写一个函数来执行此操作,而不是强制每个单独的比较。遍历字符串有什么问题?无论如何,这就是您要使用的任何库要做的事情。
-
可用的标准库取决于您计划使用哪个版本的 C++ 编译器来编译二进制文件。例如,C++0x 支持正则表达式。对于较旧的编译器,您可以使用 stricmp。
-
您希望如何比较两个字符串而不对其进行迭代?链接问题的答案没有一个对您有帮助吗?
-
@CoffeeRain:
strncasecmp确实遍历它们。 -
@arx
stricmp()不 无处不在:它是微软主义(现在拼写为_stricmp())。strcasecmp()也不是,它是一个 POSIX 扩展。令人难以置信的是,在 C 中仍然没有标准的方法来进行不区分大小写的字符串比较,但是你已经有了。 (至于 C++,显然你要么使用char_traits滚动你自己的不区分大小写的字符串,要么使用 boost。)
标签: c++ case-insensitive string-comparison