gpt4 book ai didi

c++ - 如何用任意数量的空格替换一个空格?

转载 作者:行者123 更新时间:2023-11-28 02:43:13 32 4
gpt4 key购买 nike

我正在尝试使用 boost::regex 构建正则表达式(我的 GCC 版本不能很好地处理 std::regex)。

我想用 \s* 替换任何出现的空格,以便它匹配任意数量的空格(我不关心空格的数量是否不同)。

这是一个例子:

std::string s = "this is a test string";
s = boost::regex_replace(s, boost::regex("\\s+"), "\\s*");

std::cout << s;

这会产生:

thiss*iss*as*tests*string;

想要的是this\s*is\s*a\s*test\s*string。为什么这不起作用?

我尝试用 \\\\s* 替换,但这只会生成 this\\s*is\\s*a\\s*test\\s*string,也不是我想要的!

最佳答案

在这种情况下,您似乎不会从使用正则表达式中获得很多好处。有一个(可能是次要的)附带条件,没有它们很容易做到这一点(尽管将结果与字符串匹配几乎需要正则表达式)。

std::string input = "this is a test string";

std::istringstream buffer(input);

std::ostringstream result;

std::copy(std::istream_iterator<std::string>(buffer),
std::istream_iterator<std::string>(),
infix_ostream_iterator<std::string>(result, "\\s*"));

std::cout << result.str();

结果:this\s*is\s*a\s*test\s*string

这使用来自 another postinfix_ostream_iterator .

附带条件:这不会(当前)尝试处理结果模式开头和/或结尾处的空格。在大多数情况下,这些都不是必需的,但如果您想添加它们,这样做非常简单。

关于c++ - 如何用任意数量的空格替换一个空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25253865/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com