C++如何读取用户输入的多行字符串并完成正则匹配处理
C++ 读取多行输入实现方案
你现有代码仅调用了一次getline,只能读取单行输入,要获取用户输入的全部多行内容,只需通过循环持续调用getline直到输入流终止即可,修改后代码如下:
#include <iostream> #include <string> #include <regex> using namespace std; int main() { string all_input; string current_line; // 循环读取每一行,直到输入结束 while (getline(cin, current_line)) { all_input += current_line; all_input += '\n'; // 若不需要保留原始换行符可删除此行 } std::regex const pattern("ab+c"); std::smatch match; for (auto it = all_input.cbegin(), e = all_input.cend(); std::regex_search(it, e, match, pattern); it = match[0].second) { std::cout << "Match: " << match.str() << "\n"; } return 0; }
注意事项
- 手动输入时的结束触发方式:Windows系统输入完成后按
Ctrl+Z再回车,Linux/macOS系统按Ctrl+D即可终止输入 - 该实现同时支持从文件重定向输入,可直接读取整个文件的全部内容
- 若你的业务逻辑不需要保留换行符,删除拼接
\n的代码行即可
内容的提问来源于stack exchange,提问作者Psh programmer
相关产品推荐
相关产品推荐

