【发布时间】:2017-05-06 16:07:39
【问题描述】:
假设我有一个文本,表示为 std::string,其中包含几个不同的换行符,例如\r\n 但也只是 \n 甚至只是 \r。
我现在想通过替换所有非 \r\n 换行符来统一这一点,即用 \r\n 替换所有 \r 和所有 \n 换行符。
一个简单的 boost::replace_all(text, "\n", "\r\n");不幸的是,这不起作用,因为这也会替换已经有效的 \r\n 中的 \n。
我认为 std::regex 应该是处理这个问题的好方法......但是我应该如何在正则表达式中表达这个?这是一些代码:
#include <iostream>
#include <string>
#include <regex>
int main()
{
std::string text = "a\rb\nc\r\nd\n";
std::regex reg(""); // What to put here?
text = std::regex_replace(text, reg, "\r\n");
std::cout << text;
}
文本最后应该是"aaa\r\nbbb\r\nccc\r\nddd\r\n"
【问题讨论】: