C 字串分割方法總結

2021-10-02 20:54:10 字數 1484 閱讀 4699

在一些程式設計練習中,經常會對字串進行處理,往往處理之前都會對字串進行分割來提取各部分資訊。在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...