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/