如何在cpp中使用CRLF分隔符拆分字符串?

时间:2015-04-14 08:00:39

标签: c++ split newline delimiter

我有一些字符串:

testing testing

test2test2

这些行由CRLF划分。我看到有:0d0a0d0a将它们分开。 如何使用此信息拆分它?

我想使用str.find(CRLF-DELIMITER),但无法确定如何

编辑: 我已经使用了str.find("textDelimiter"),但现在我需要它来查找hexa而不是搜索字符串"0d0a0d0a"

1 个答案:

答案 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;
 }