如何实现c ++脚本从字符数组中搜索一组字符。搜索字符不区分大小写。例如,我键入“aBc”,字符数组有“abcdef”,它是点击并显示找到的。
这是我的剧本,不知道出了什么问题。
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
int main()
{
char charArr1[]="abcdefghi";
char inputArr[20];
cin>>inputArr;
charArr1.find("abc");
}
我收到了这个错误。 请求'charArr1'中的成员'find',这是非类型'char [10]
答案 0 :(得分:3)
答案 1 :(得分:1)
最简单的解决方案是将输入转换为小写,和
使用std::search
:
struct ToLower
{
bool operator()( char ch ) const
{
return ::tolower( static_cast<unsigned char>( ch ) );
}
};
std::string reference( "abcdefghi" );
std::string toSearch;
std::cin >> toSearch;
std::transform( toSearch.begin(), toSearch.end(), toSearch.begin(), ToLower() );
std::string::iterator results
= std::search( reference.begin(), reference.end(),
toSearch.begin(), toSearch.end() );
if ( results != reference.end() ) {
// found
} else {
// not found
}
ToLower
类应该在您的工具包中;如果你做的话
文本处理,你会经常使用它。你会注意到这种类型
转换;这是必要的,以避免因未定义的行为
::tolower
的某种特殊界面。 (取决于
您执行的文本处理类型,您可能希望将其更改为
使用ctype
中的std::locale
构面。你也避免了
有趣的演员,但班级本身将不得不携带一些过剩
bagage保持指向小平面的指针,并使其保持活力。)