在一些程式設計練習中,經常會對字串進行處理,往往處理之前都會對字串進行分割來提取各部分資訊。在c++中雖然沒有像python那樣提供split這樣直接的字串分割函式,但也有一些其他的方法能夠對其進行分割,下面介紹幾種c++中常用的字串分割方法。
在c++ string類中,提供了兩個成員函式可以用來實現字串分割,乙個是find函式,另乙個是substr函式,下面看一下這兩個函式的宣告。
find函式:
原型: size_t find (const string& str, size_t pos = 0) const;
功能:查詢子字串第一次出現的位置。
引數說明:str為子字串,pos為初始查詢位置。
返回值:找到的話返回第一次出現的位置,否則返回string::npos。
substr函式:
原型: string substr (size_t pos = 0, size_t len = npos) const;
功能:在原字串中擷取子字串。
引數說明:pos為起始位置,len為要擷取子字串的長度。
返回值:子字串。
下面**實現了字串分割函式:
vectorsplit(const string &str, const string &pattern)
return res;
}
strtok為c語言中的字串分割函式,其具體解釋如下:
原型:char * strtok ( char * str, const char * delimiters );
功能:分割字串str,delimiters為指定的分割符,可以有多個。
說明:strtok只能接受c風格的字串,如果是string型別,可以使用c_str函式進行轉換。strtok()用來將字串分割成乙個個片段。引數s指向欲分割的字串,引數delim則為分割字串,當strtok()在引數s的字串中發現到引數delim的分割字元時 則會將該字元改為\0 字元。在第一次呼叫時,strtok()必需給予引數s字串,往後的呼叫則將引數s設定成null。每次呼叫成功則返回被分割出片段的指標。
實現**如下:
vectorsplit2(const string &str, const string &pattern)
delete strc;
return res;
}
stringstream為字串輸入輸出流,繼承自iostream,靈活地使用stringstream流可以完成很多字串處理功能,例如字串和其他型別的轉換,字串分割等。在這裡,我們使用其實現字串分割功能。注意stingstream的使用需要包含sstream標頭檔案。
vectorsplit3(const string &str, const char pattern)
return res;
}
關於stringstream的具體說明可以參見:
**:
C 字串分割總結
表頭 bool afxapi afxextractsubstring cstring rstring,lpctstr lpszfullstring,int isubstring,tchar chsep n rstring 對cstring將得到乙個單獨的子字串的物件。lpszfullstring 字...
C 分割字串的方法
方法一 自定義分割函式 定義字元分割函式 要分割的字串,分割後字串儲存到的vector容器,分隔符 void splitstring const string s,vector v,const string c if pos1 s.length 如果 v.push back s.substr pos...
C 字串分割
c 中的字元分割是乙個常見的應用,下面是乙個字串分割的 字串分割 vectorsplit string const string str,const string delimiters else pos delim split str.find delimiters res.push back sp...