有遇到空白行时,可以使用boost::split拆分字符串的方法吗?
这是我的意思的摘要。
std::stringstream源;
source.str(input_string);
std::string行;
std::getline(source,line,'\ 0');
std::vector 标记;
boost:split( token ,行,boost::is_any_of(“空白行在这里什么”);

最佳答案

除非您将空白行表示为“可能包含其他空格的行”,否则可以按双\n\n分割。
Live On Coliru

#include <boost/regex.hpp>
#include <boost/algorithm/string_regex.hpp>
#include <boost/algorithm/string/classification.hpp>
#include <sstream>
#include <iostream>
#include <iomanip>

int main() {
    std::stringstream source;
    source.str(R"(line one

that was an empty line, now some whitespace:

bye)");

    std::string line(std::istreambuf_iterator<char>(source), {});
    std::vector<std::string> tokens;

    auto re = boost::regex("\n\n");
    boost::split_regex(tokens, line, re);

    for (auto token : tokens) {
        std::cout << std::quoted(token) << "\n";
    }
}
版画
"line one"
"that was an empty line, now some whitespace:

bye"
在“空”行上允许空格
只需用正则表达式表示即可:
auto re = boost::regex(R"(\n\s*\n)");
现在的输出是: Live On Coliru
"line one"
"that was an empty line, now some whitespace:"
"bye"

关于c++ - 通过空白行 boost 拆分字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62491337/

10-09 03:03