上述代码换一张不忽略空格和其他非数字字符的输入
时间: 2024-10-21 14:02:47 浏览: 17
如果想让代码接受包含空格和其他非数字字符的输入,可以稍微调整`find_digits`函数,仅保留连续的数字部分,例如使用正则表达式库。这里以C++的`std::regex`为例,但请注意,不是所有C语言编译器都内置这个库。
首先确保头文件包含了正则表达式支持:
```cpp
#include <iostream>
#include <string>
#include <regex>
using namespace std;
void find_digits(const string& input, string& output) {
regex pattern("\\d+"); // 匹配一串数字
smatch match;
bool found = false;
for (const auto& m : regex_iterator<string>(input.begin(), input.end(), pattern)) {
found = true;
output.append(m.str());
}
if (!found) {
output = "No digits found.";
} else {
output += "\n";
}
}
int main() {
string input, output;
cout << "Enter a string: ";
getline(cin, input); // getline不会跳过空格
find_digits(input, output);
cout << "String with only digits: " << output << endl;
return 0;
}
```
在这个版本中,`getline()`用于获取整个行的输入,包括空格,然后`find_digits`函数使用正则表达式找到连续的数字并将其拼接到输出字符串。如果没有找到数字,它将输出"No digits found."。
阅读全文