C++如何提取string类型里的数字
时间: 2024-02-16 08:03:58 浏览: 884
可以使用isdigit()函数来判断字符串中的字符是否为数字,然后使用字符串流istringstream将数字字符串转换为数字类型。以下是示例代码:
```
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string str = "abc123def";
string num_str = "";
int num = 0;
for (int i = 0; i < str.length(); i++)
{
if (isdigit(str[i]))
{
num_str += str[i];
}
}
stringstream ss(num_str);
ss >> num;
cout << "字符串中的数字是:" << num << endl;
return 0;
}
```
输出结果为:
```
字符串中的数字是:123
```
相关问题
c++提取string中数字
你可以使用 `std::isdigit` 函数和 `std::stringstream` 类来实现提取字符串中的数字。具体步骤如下:
1. 遍历字符串,将数字字符逐一提取出来,存放在一个字符串中。
2. 将提取出来的字符串转化为数字类型。
以下是示例代码:
```c++
#include <iostream>
#include <string>
#include <sstream>
#include <cctype>
int main()
{
std::string input = "abc123def456gh7"; // 待提取的字符串
std::string numbers; // 存放提取出来的数字字符
for (char c : input) {
if (std::isdigit(c)) {
numbers += c;
}
}
int num;
std::stringstream ss(numbers); // 将字符串转化为stringstream对象
while (ss >> num) {
std::cout << num << std::endl;
}
return 0;
}
```
在上面的示例代码中,我们首先遍历输入字符串,将数字字符逐一提取出来存放在 `numbers` 字符串中。然后我们使用 `std::stringstream` 类将 `numbers` 字符串转化为一个 `stringstream` 对象,以便后续可以使用 `>>` 运算符将其转化为数字类型。最后,我们使用一个循环将所有提取出来的数字打印输出。
C++如何用strtok函数提取该string中的数字集合 string text = "-2408835.9820 4698169.2238 3566538.6125 APPROX POSITION"
可以使用以下代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char text[] = "-2408835.9820 4698169.2238 3566538.6125 APPROX POSITION";
char *token = strtok(text, " "); // 以空格作为分隔符
while (token != NULL) {
if (sscanf(token, "%lf", &num) == 1) { // sscanf函数将token转换为double类型的数字
printf("%lf\n", num);
}
token = strtok(NULL, " ");
}
return 0;
}
```
输出结果为:
```
-2408835.982000
4698169.223800
3566538.612500
```
阅读全文