2
我想使用Boost的正則表達式庫將包含標籤和數字的字符串分隔爲標記。例如'abc1def002g30'
將被分成{'abc','1','def','002','g','30'}
。我修改Boost文檔中給出拿出此代碼example:使用Boost-Regex將字符串解析爲字符和數字
#include <iostream>
#include <boost/regex.hpp>
using namespace std;
int main(int argc,char **argv){
string s,str;
int count;
do{
count=0;
if(argc == 1)
{
cout << "Enter text to split (or \"quit\" to exit): ";
getline(cin, s);
if(s == "quit") break;
}
else
s = "This is a string of tokens";
boost::regex re("[0-9]+|[a-z]+");
boost::sregex_token_iterator i(s.begin(), s.end(), re, 0);
boost::sregex_token_iterator j;
while(i != j)
{
str=*i;
cout << str << endl;
count++;
i++;
}
cout << "There were " << count << " tokens found." << endl;
}while(argc == 1);
return 0;
}
存儲在count
令牌的數量是正確的。但是,*it
只包含一個空字符串,因此不會打印任何內容。任何猜測我做錯了什麼?
編輯:根據下面建議的修復,我修改了代碼,現在它工作正常。
謝謝,我應該更加關注那個submatch參數的作用。 – John 2011-05-24 20:15:46
沒問題 - 請檢查它是否爲有效的答案,如果沒有,請在此處跟進。玩的開心! – holtavolt 2011-05-24 20:31:03