用c++代码实现某城市电话号码分三组判断,分别是: 地区码—— 空白或三位数字; 前缀—— 非‘0’或‘1’开头的三位数字; 后缀—— 4位数字。 假定被测程序能接受一切符合上述规定的电话号码, 拒绝所有不符合规定的电话号码
时间: 2023-10-21 20:03:34 浏览: 58
以下是用 C++ 实现的代码:
```cpp
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main() {
string phoneNum;
regex pattern("[0-9]{3} [^01][0-9]{2} [0-9]{4}"); // 正则表达式
cout << "请输入电话号码(格式为:地区码 前缀 后缀):" << endl;
while (getline(cin, phoneNum)) {
if (regex_match(phoneNum, pattern)) {
cout << "符合规定的电话号码!" << endl;
} else {
cout << "不符合规定的电话号码!" << endl;
}
cout << "请输入电话号码(格式为:地区码 前缀 后缀):" << endl;
}
return 0;
}
```
解释:
- 首先定义了一个字符串 `phoneNum`,用于存储用户输入的电话号码;
- 然后定义了一个正则表达式 `pattern`,它的含义是:以三个数字开头,后跟一个空格和三个非 '0' 或 '1' 的数字,再后跟一个空格和四个数字;
- 接着通过 `getline(cin, phoneNum)` 从标准输入读取用户输入的电话号码,如果读取失败(比如用户按下了 Ctrl+C),则退出程序;
- 然后使用 `regex_match(phoneNum, pattern)` 来判断输入的电话号码是否符合正则表达式 `pattern` 的规定;
- 最后根据判断结果输出相应的提示信息,然后再次提示用户输入电话号码,进入下一轮循环。
注意:这里使用了 C++11 中引入的正则表达式库,建议在编译时加上 `-std=c++11` 参数。