2014-03-24 80 views
0

這是我需要構建到現有庫中的一些附加功能。我試圖檢查一個字符串是否包含一個子字符串。我有指向主字符串的開始和一個過去的結尾(這是一個更大的字符串的子字符串),並且要搜索的字符是一個字符串數據類型。檢查C++中的子字符串

char * start; 
char * end; 
String wordtosearchfor 

我讀了關於在C++中查找,但我無法弄清楚如何使用指針輸入。這種形式的輸入是否有內置功能?或者從頭到尾讀入一個可以與find一起使用的新字符串是否有效?

謝謝!

+1

C在你的問題標題,或C++在你的標記? –

+0

如果'* end'指向與* start對應的空終止符,或者指向它之前的字節(也就是說,您不在其他某個更大的子字符串中搜索子字符串),則可以簡單地使用'strstr()'如果C函數適合你。 – mah

+0

由於庫有字符串定義,我明白它是C++。任何快速完成工作的東西都會很棒。 * end不是空終止符,要搜索的主要字符串本身就是一個較大字符串的子字符串。謝謝。 – ame

回答

0

首先你確實可以使用class std :: string的成員函數查找。例如

char * start; 
char * end; 
std::string wordtosearch; 

// setting values for variables 

std::string::size_type n = wordtosearch.find(start, 0, end - start); 

也有是在報頭<algorithm> 聲明例如

char * start; 
char * end; 
std::string wordtosearch; 

// setting values for variables 

std::string::iterator it = std::search(wordtosearch.begin(), wordtosearch.end(), 
             start, end); 

在這些例子中我想標準算法std::search該seached字符串的最後一個字符之後結束點。

+0

這不是在wordtosearch中搜索?我需要查找字符串中的wordtosearch,該字符串從*開始並以* end-1結尾 – ame

+0

@ame是的,因爲我已經理解這將在wordtosearch中進行搜索。但是,如果您需要在其他字符串中搜索wordtosearch,則不會出現bif差異。它更簡單。 –

相關問題