c++ - regex_replace 在 cin 期间不工作

标签 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 的情况下运行它时,我得到了我期望的结果: “祝你度过<美好的>一天”

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

遇到空格表达式结束

这是怎么回事?

最佳答案

作为 cin>>input 提取单个单词而不是整个句子,你的 input 只得到整个单词的 Have 祝您度过*美好*的一天,这反射(reflect)了您的产出。只需将 cin>>input 替换为

getline(cin, input); 

占整行。

关于c++ - regex_replace 在 cin 期间不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32727373/

相关文章:

mysql - SQL Server 如何创建带空格的列名

c++ - 使用特殊(德语)字符对 char * 进行排序?

MySQL 8 + 正则表达式字边界

ruby - 如何通过正则表达式查找括号内的文本,但有一些异常(exception)?

java - 正则表达式在 Java 代码中不起作用,尽管它可以在正则表达式网站上运行

c++ - 路径中的 Qt5 转义空间

c++函数指针声明导致程序在退出时崩溃

c++ - 我可以在 C++ 中使用 [] 运算符来创建虚拟数组吗

c++ - 如何将此代码从 C 转换为 C++?

html - 摆脱页脚右下角的空白