如何在C ++中标记字符串?
Java有一个方便的拆分方法:
String str = "The quick brown fox";
String[] results = str.split(" ");
有没有简单的方法来在C ++中做到这一点?
您的简单案例可以使用std::string::find
方法轻松构建。 但是,请看一下Boost.Tokenizer。 这很棒。 Boost通常有一些非常酷的字符串工具。
Boost tokenizer类可以使这种事情变得非常简单:
#include <iostream>
#include <string>
#include <boost/foreach.hpp>
#include <boost/tokenizer.hpp>
using namespace std;
using namespace boost;
int main(int, char**)
{
string text = "token, test string";
char_separator<char> sep(", ");
tokenizer< char_separator<char> > tokens(text, sep);
BOOST_FOREACH (const string& t, tokens) {
cout << t << "." << endl;
}
}
更新了C ++ 11:
#include <iostream>
#include <string>
#include <boost/tokenizer.hpp>
using namespace std;
using namespace boost;
int main(int, char**)
{
string text = "token, test string";
char_separator<char> sep(", ");
tokenizer<char_separator<char>> tokens(text, sep);
for (const auto& t : tokens) {
cout << t << "." << endl;
}
}
这是一个非常简单的:
#include <vector>
#include <string>
using namespace std;
vector<string> split(const char *str, char c = ' ')
{
vector<string> result;
do
{
const char *begin = str;
while(*str != c && *str)
str++;
result.push_back(string(begin, str));
} while (0 != *str++);
return result;
}
链接地址: http://www.djcxy.com/p/3299.html