regex_replace在cin期间无法正常工作

时间:2015-09-22 21:38:26

标签: c++ regex space

string input("Have a *great* day");
regex re("(.*)[*](.+?)[*](.*)");    

string output;
cin >> input; //Doesn't work
//output = regex_replace(input, re, "$1<p>$2</p>$3");
regex_replace(back_inserter(output), input.begin(), input.end(), re, "$1<p>$2</p>$3");
cout << output << endl;

当我在没有cin的情况下运行它时,我得到了我期望的结果: “有一个&lt; great&gt; day”

然而,当我使用cin并输入与输入完全相同的字符串时,我得到: “具有”

只要遇到空格,表达式就会结束

发生了什么事?

1 个答案:

答案 0 :(得分:2)

由于cin>>input提取单个单词而不是整个句子,因此input仅获得反映您输出的整个单词Have的{​​{1}}。只需将just Have a *great* day替换为

即可
cin>>input

需要一整行。