我需要将一个字符串拆分为标记并将第三个标记作为字符串返回。
我有以下代码:
#include <iostream>
#include <string>
#include <cstring>
#include <boost/tokenizer.hpp>
#include <fstream>
#include <sstream>
using namespace std;
main()
{
std::string line = "Data1|Data2|Data3|Data4|Data5";
typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
boost::char_separator<char> sep("|");
tokenizer tokens(line, sep);
for (tokenizer::iterator tok_iter = tokens.begin();
tok_iter != tokens.end(); ++tok_iter)
std::cout << *tok_iter << endl;
std::cout << "\n";
}
代码很好地将字符串分隔为标记。现在我无法弄清楚如何保存第三个标记,例如,作为一个单独的字符串。
谢谢!
答案 0 :(得分:3)
当你知道它是循环的第3次迭代时,只需存储到字符串。在std::distance的帮助下,您不需要任何额外的变量。
string str;
for (tokenizer::iterator tok_iter = tokens.begin();
tok_iter != tokens.end(); ++tok_iter)
{
// if it's the 3rd token
if (distance(tokens.begin(), tok_iter) == 2)
{
str = *tok_iter;
// prints "Data3"
cout << str << '\n';
}
}