2011-07-08 45 views
4

我被这个简单的问题困住了。 假设我有一个由字符[0-9]组成的字符串。我想要做的是使用boost :: split通过单个字符分割字符串。boost :: split:如何用字符分割字符串?

std::string str = "0102725"; 
std::vector<std::string> str2; 
boost::split(str2, str, boost::is_any_of(SOMETHING)); 

我寻找的东西,使得STR2 [0]包含 “0”,STR2 [1]包含 “1”,STR2 [2]包含 “0”,等等。到目前为止,我已经尝试过“”,“:”和“:”,但没有运气......

回答

7

boost::split对此是过分的。

for (size_t i=0; i < str.length(); i++) 
    str2.push_back(std::string(1, str.at(i))); 
+0

你认为'str.at(i)'会触发哪一个'std :: string'的构造函数? ;-) –

+0

:-)更正了代码,对此感到抱歉。 – Mat

+0

甜。而+1则是一种简单实用的方法。 –

3

除了@Mat的方法,这是我的承担。既然你是分离的字符你可能不希望,

vector<string> str2; // acquires character + extra space for '\0' 

反倒是,

vector<char> str2; // only single character 

这里是你如何可以交替做:

for(unsigned int i = 0; i < str.size(); i++) 
    str2.push_back(str[i]); 

Demo。您可以在需要时访问str2[i]

+0

感谢您的替代方法。 – cheese55