這是我需要構建到現有庫中的一些附加功能。我試圖檢查一個字符串是否包含一個子字符串。我有指向主字符串的開始和一個過去的結尾(這是一個更大的字符串的子字符串),並且要搜索的字符是一個字符串數據類型。檢查C++中的子字符串
char * start;
char * end;
String wordtosearchfor
我讀了關於在C++中查找,但我無法弄清楚如何使用指針輸入。這種形式的輸入是否有內置功能?或者從頭到尾讀入一個可以與find一起使用的新字符串是否有效?
謝謝!
這是我需要構建到現有庫中的一些附加功能。我試圖檢查一個字符串是否包含一個子字符串。我有指向主字符串的開始和一個過去的結尾(這是一個更大的字符串的子字符串),並且要搜索的字符是一個字符串數據類型。檢查C++中的子字符串
char * start;
char * end;
String wordtosearchfor
我讀了關於在C++中查找,但我無法弄清楚如何使用指針輸入。這種形式的輸入是否有內置功能?或者從頭到尾讀入一個可以與find一起使用的新字符串是否有效?
謝謝!
首先你確實可以使用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字符串的最後一個字符之後結束點。
這不是在wordtosearch中搜索?我需要查找字符串中的wordtosearch,該字符串從*開始並以* end-1結尾 – ame
@ame是的,因爲我已經理解這將在wordtosearch中進行搜索。但是,如果您需要在其他字符串中搜索wordtosearch,則不會出現bif差異。它更簡單。 –
C在你的問題標題,或C++在你的標記? –
如果'* end'指向與* start對應的空終止符,或者指向它之前的字節(也就是說,您不在其他某個更大的子字符串中搜索子字符串),則可以簡單地使用'strstr()'如果C函數適合你。 – mah
由於庫有字符串定義,我明白它是C++。任何快速完成工作的東西都會很棒。 * end不是空終止符,要搜索的主要字符串本身就是一個較大字符串的子字符串。謝謝。 – ame