C++ 分段parse stream的簡單方法: getline, istream_constructor + copy
c++的getline函數是非常好用的parse工具,用在固定格式上的parse非常方便。 getline的格式如下: istream& getline(istream& is, string& str, char delim); istream& is 輸入的istream/fstream string& str 擷取下來的字串要儲存的地方(開個變數存即可) char delim 分段字元。 我們直接舉例子說明使用方法,假設今天有個文件長得像這樣: (0,82)(0,-14)(0,-1)(0,-6)(0,-4) 我們想要個別parse每個括弧存成字串,這時可以用下面的程式碼: string buffer; while (getline(fin, buffer, ')')) { buffer = buffer + ")"; } cout << buffer << " "; 一開始parse出來會是 (0,82 (0,14...都少了個右括弧, 所以我們在迴圈中補上。輸出結果如下: (0,82) (0,-14) (0,-1) (0,-6) (0,-4) C++11 Parsing的好幫手: istream_constructor + copy const char * cStr; std::stringstream ss(cStr); std::copy(std::istream_iterator (ss), std::istream_iterator (), std::back_inserter(vector)); Can split a simple format string into a vector.(ex: abc bcd cde... or abc\nbcd\ncde\n...)