有遇到空白行时,可以使用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/