用c++提取字符串中的数字
时间: 2024-03-21 11:19:27 浏览: 109
以下是一个简单的示例代码,用于从字符串中提取数字:
```c
#include <stdio.h>
#include <ctype.h>
void extractNumbers(char *str) {
int i = 0;
while (str[i]) {
if (isdigit(str[i])) {
int num = 0;
while (isdigit(str[i])) {
num = num * 10 + (str[i] - '0');
i++;
}
printf("%d ", num);
}
else {
i++;
}
}
}
int main() {
char str[] = "abc123def456ghi789";
extractNumbers(str);
return 0;
}
```
输出结果为:
```
123 456 789
```
该代码使用了两个循环,第一个循环遍历字符串中的每个字符,第二个循环提取数字。如果当前字符是数字,则进入第二个循环,将连续的数字字符转换为整数并输出。如果当前字符不是数字,则继续遍历下一个字符。
相关问题
C++中提取字符串中的连续数字
以下是C++中提取字符串中的连续数字的方法:
方法一:使用isdigit()函数和stringstream类
```cpp
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
void extractNumbers(string str, int* arr, int& count) {
stringstream ss(str);
string temp;
while (ss >> temp) {
int num = 0;
for (int i = 0; i < temp.length(); i++) {
if (isdigit(temp[i])) {
num = num * 10 + (temp[i] - '0');
}
else {
if (num != 0) {
arr[count++] = num;
num = 0;
}
}
}
if (num != 0) {
arr[count++] = num;
}
}
}
int main() {
string str = "abc2345 345fdf678 jdhfg945";
int arr[100];
int count = 0;
extractNumbers(str, arr, count);
for (int i = 0; i < count; i++) {
cout << arr[i] << " ";
}
cout << endl;
cout << "共有" << count << "个整数" << endl;
return 0;
}
```
方法二:使用正则表达式
```cpp
#include <iostream>
#include <string>
#include <regex>
using namespace std;
void extractNumbers(string str, int* arr, int& count) {
regex reg("\\d+");
smatch result;
while (regex_search(str, result, reg)) {
arr[count++] = stoi(result[0]);
str = result.suffix().str();
}
}
int main() {
string str = "abc2345 345fdf678 jdhfg945";
int arr[100];
int count = 0;
extractNumbers(str, arr, count);
for (int i = 0; i < count; i++) {
cout << arr[i] << " ";
}
cout << endl;
cout << "共有" << count << "个整数" << endl;
return 0;
}
```
C++在字符串中提取数字
在C++中,你可以使用标准库中的`std::stringstream`或者`std::regex`来从字符串中提取数字。这里我们提供两种方法:
1. **使用`stringstream`**:
```cpp
#include <sstream>
#include <string>
std::string str = "Hello123World456";
std::istringstream iss(str);
double num;
if (iss >> num) {
// 提取成功,num现在包含123.456
} else {
// 提取失败,可能是因为没有找到有效的数字
}
```
2. **使用正则表达式 (`<regex>`)**:
```cpp
#include <regex>
#include <string>
std::string str = "My phone number is +123-456-7890";
std::smatch match;
std::regex regex("\\d+");
if (std::regex_search(str, match, regex)) {
// match.first指向匹配到的第一个数字串,如"123"
int num = std::stoi(match[0]);
} else {
// 没有找到数字
}
```
阅读全文