0

如何实现 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]

4

2 回答 2

3
  1. 复制您的输入并将它们转换为小写(请参阅如何将 std::string 转换为小写?
  2. 执行常规搜索(http://www.cplusplus.com/reference/string/string/find/
于 2013-07-19T14:09:02.093 回答
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. ,并使其保持活力。)

于 2013-07-19T14:41:53.163 回答