C++中如何提取getline字符串中的元素
时间: 2023-10-22 12:05:24 浏览: 94
C++实现从输入中读取字符串
在 C 语言中,可以使用 strtok 函数提取 getline 字符串中的元素。具体步骤如下:
1. 定义一个 char 类型的指针变量 ptr ,并使用 getline 函数读取字符串。
2. 使用 strtok 函数将字符串按照指定的分隔符(例如空格、逗号等)分成若干个部分,并将每个部分的起始地址依次存放在指针数组中。
3. 在每次使用 strtok 函数时,需要传入 NULL 作为参数,以便函数能够识别之前已经分割过的字符串,并在下一次分割时从上一次分割结束的位置开始。
4. 将每个部分(即指针数组中的元素)转换为需要的数据类型。
下面是一个示例程序,演示了如何使用 strtok 函数提取 getline 字符串中的元素:
```
#include <stdio.h>
#include <string.h>
int main()
{
char *line = NULL;
size_t len = 0;
ssize_t read;
printf("Enter a line of text: ");
read = getline(&line, &len, stdin);
if (read != -1)
{
char *ptr;
const char *delimiter = " ";
char *tokens[10]; // 最多分割出 10 个部分
int i = 0;
ptr = strtok(line, delimiter);
while (ptr != NULL) {
tokens[i++] = ptr;
ptr = strtok(NULL, delimiter);
}
// 输出分割后的字符串
printf("\nTokens:\n");
for (int j = 0; j < i; j++) {
printf("%d: %s\n", j, tokens[j]);
}
// 将部分转换为整数
int num = atoi(tokens[0]);
printf("\nFirst element as integer: %d\n", num);
}
free(line);
return 0;
}
```
在该程序中,我们首先使用 getline 函数读取用户输入的字符串,然后调用 strtok 函数将字符串按照空格分割成若干个部分,并将每个部分的起始地址存放在 tokens 数组中。最后,将 tokens 数组中的第一个部分转换为整数并输出。
阅读全文