字串分割函式的C++實現
阿新 • • 發佈:2018-12-17
#include <iostream> #include <string> #include <vector> #include <algorithm> #include <fstream> using namespace std; int main() { void readtest();//宣告 readtest();//呼叫 return 0; } void readtest() { void split_cpp(const string& str,vector<string>& vector_name,const string& segmentation_condition);//宣告 string file,linetext; vector<string> split_line; file="../test.txt";//讀取的檔案路徑已經檔名,其中"../"代表的是當前專案下的目錄(相對路徑) ifstream readin(file); if(!readin.is_open())//只讀,如果開啟檔案失敗. { cout<<"can't open the file!"<<endl; } while(getline(readin,linetext))//while迴圈,getline讀行,每行存入linetext. { split_cpp(linetext,split_line," ");//呼叫函式,分割條件為空格 cout<<split_line.at(0)<<" "<<split_line.at(1)<<" "<<split_line.at(2)<<" "<<split_line.at(3) <<" "<<split_line.at(4)<<endl;//輸出split_line. } } void split_cpp(const string& str,vector<string>& vector_name,const string& segmentation_condition) //第一個引數為輸入引數,讀進來還沒有操作的.第二個引數是分割完成後存入的陣列名,第三個引數為分割條件 { string ::size_type lastpos=str.find_first_not_of(segmentation_condition,0);//從0開始,第一個不是空格的位置 string ::size_type pos=str.find_first_of(segmentation_condition,lastpos);//從上一個不是空格的位置開始,第一個空格的位置 while (string::npos!=pos||string::npos!=lastpos) { vector_name.push_back(str.substr(lastpos,pos - lastpos));//取子串從lastpos位置開始,長度為pos-lastpos lastpos=str.find_first_not_of(segmentation_condition,pos);//同上 pos=str.find_first_of(segmentation_condition,lastpos);//同上 } } 使用非qt的c++實現,注意包含標頭檔案以及使用名稱空間. 另外,讀取檔案的方式也為c++和前文中的qt不同. (另文中split_cpp函式是我在網上看到的,非原創,出處已忘記.)