如何在 cpp 中使用 CRLF 分隔符拆分字符串?
How to split string using CRLF delimiter in cpp?
我有一些字符串 :
testing testing
test2test2
这些行由 CRLF 分隔。我看到有 : 0d0a0d0a
deviding 他们。
我如何使用这些信息拆分它?
我想使用 str.find(CRLF-DELIMITER)
但不知道如何使用
编辑:
我已经使用了 str.find("textDelimiter")
,但现在我需要它来查找 hexa 而不是搜索字符串 "0d0a0d0a"
使用 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;
}
我有一些字符串 :
testing testing
test2test2
这些行由 CRLF 分隔。我看到有 : 0d0a0d0a
deviding 他们。
我如何使用这些信息拆分它?
我想使用 str.find(CRLF-DELIMITER)
但不知道如何使用
编辑:
我已经使用了 str.find("textDelimiter")
,但现在我需要它来查找 hexa 而不是搜索字符串 "0d0a0d0a"
使用 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;
}