【发布时间】:2016-03-01 05:44:46
【问题描述】:
假设我有一些字符串,str。
我要检查 str 是否包含关键字:“samples” 但是,“samples”可以采用任何大写形式,例如:“Samples”、“SampleS”、“SAMPLES”。
这就是我正在尝试的:
string str = "this is a FoO test";
if (str.find("foo") != std::string::npos){
std::cout << "WORKS";
}
这不会检测“FoO”子字符串。我可以通过某种论点来忽略大写吗?还是我应该完全使用其他东西?
【问题讨论】:
-
最简单的解决方案是将两者转换为相同的大小写,但这可能不是最有效的。
-
如果您打算处理 The World 的语言(而不仅仅是英语),您需要注意在每个字符上调用
toupper(或tolower)和实际上是有区别的将整个字符串转换为大写(或小写)。请参阅this answer to a vaguely related question。
标签: c++ string parsing substring