如何将句子中的标点符号与C ++中每个短语和标点符号之间的空格分开?

时间:2010-05-26 05:17:10

标签: c++ regex sed whitespace punctuation

我想用c ++编写一个程序来获取一个句子并在每个单词和标点之间插入一个空格!在sed脚本中,这是通过以下表达式完成的:

sed -e "s/,\([^0-9]\)/ , \1/g" -e "s/\.\([^0-9]\)/ . \1/g" -e 's/\.[ ]*$/ ./g' -e "s/\'/ \' /g" -e 's/?/ ?/g' -e 's/\`\`/ `` /g' -e "s/\' \'/''/g" -e 's/(/ ( /g' -e 's/)/ ) /g' -e 's/ \. \([^$]\)/. \1/g' -e "s/\' s/\'s/g" -e "s/\"\([^\"]*\)\"/\" \1 \"/g" $1 | sed -e "s/\"\([^\"]*\)\"/\`\`\1''/g" 

但我不知道如何在Windows中的c ++中做到这一点! 例如:应该转换一个“现在的问题:他是否可以更像是对泰迪·罗斯福的强硬充电”。必须转换成“现在的问题:他能否更像是对泰迪罗斯福的强硬指责。” 所以标点符号如“ - ”或例如“。”在“号”不应该在一个句子中间隔,但是其他不依赖于单词或短语的标点符号应该是间隔的。

1 个答案:

答案 0 :(得分:3)

由于您已经知道如何使用正则表达式处理它,我认为您可以尝试使用Boost.Regex以便使用C ++对其进行归档。