我有一些字符串:
testing testing
test2test2
这些行由CRLF划分。我看到有:0d0a0d0a
将它们分开。
如何使用此信息拆分它?
我想使用str.find(CRLF-DELIMITER)
,但无法确定如何
编辑:
我已经使用了str.find("textDelimiter")
,但现在我需要它来查找hexa而不是搜索字符串"0d0a0d0a"
答案 0 :(得分:0)
使用boost::split
来做到这一点。另请查看Boost.Tokenizer
。
以下是使用正则表达式执行此操作的另一种方法:
using std::endl;
using std::cout;
using std::string;
using std::vector;
using boost::algorithm::split_regex;
int main()
{
vector<string> res;
string input = "test1\r\ntest2\r\ntest3";
split_regex(res, input, boost::regex("(\r\n)+"));
for (auto& tok : res)
{
std::cout << "Token: " << tok << std::endl;
}
return 0;
}
以下是没有Boost的方法:
#include <string>
#include <sstream>
#include <istream>
#include <vector>
#include <iostream>
int main()
{
std::string strlist("line1\r\nLine2\r\nLine3\r\n");
std::istringstream MyStream(strlist);
std::vector<std::string> v;
std::string s;
while (std::getline(MyStream, s))
{
v.push_back(s);
std::cout << s << std::endl;
}
return 0;
}