2013-07-19 56 views
0

如何實現C++腳本來從字符數組中搜索一組字符。搜索字符不區分大小寫。例如,我輸入「aBc」和字符數組有「abcdef」,它是一個命中並顯示找到的。C++:查找字符數組中的匹配字符

這是我的腳本,不知道什麼是錯的。

#include <iostream> 
#include <cstdlib> 
#include <cstring> 

using namespace std; 

int main() 
{ 
    char charArr1[]="abcdefghi"; 
    char inputArr[20]; 

    cin>>inputArr; 
    charArr1.find("abc"); 
} 

我收到了這個錯誤。在「charArr1」,成員「查找」 請求其是非類型的「字符[10]

+1

是否有任何理由不使用'std :: string'?這會容易很多。 –

回答

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。您還應該避免 有趣演員,但該課程本身必須攜帶一些多餘的包保持一個指向該方面的指針,並保持它的活着。)

相關問題