用std::string做strtok
參考資料: stackoverflow
用std::string做strtok
由於C++的string type並不支援strtok的功能,所以如果想要將C++的string做切段,有以下幾種方法:
法1: 用istringstream
使用stringstream類別,使用方法就像C++風格的iostream一樣,只是這個stream不是stdin/stdout,也不是fstream,而是將string的內容倒入一個stream (因此不具有fd–待查證)。
將要切割的字串倒入stream以後,再用getline中的Delimiter參數做為切割標準即可
參考程式碼片段如下:
1 | vector<string> split(const string& s, char delimiter){ |
法2: 先把string轉成char*以後再切割
參考資料
如果要將string轉換成char*,可以透過string.c_str()
函數
這個方法其實不太推薦,他是把C++風格棄掉,強制使用strtok來處理字串
參考程式碼片段如下:
1 | //given string str as a string needed to slice |