21xrx.com
2024-12-22 21:21:16 Sunday
登录
文章检索 我的文章 写文章
C++ 输入带逗号分隔的数组
2023-07-04 14:39:51 深夜i     --     --
C++ 输入 带逗号分隔 数组

在 C++ 中,输入带逗号分隔的数组是一项常见任务。这通常发生在需要读取以逗号分隔的数字列表的情况下,例如读取由用户输入的数据或从文本文件中读取数据。以下是一些方法可以实现在 C++ 中输入带逗号分隔的数组。

方法一:使用 cin 和循环语句

使用标准输入流 cin 和一个循环语句是最简单的方法,可用来读取带逗号分隔的数组。在读取输入时,每次调用 cin 读取一个数字,然后检查下一个字符是否为逗号,如果是,继续读取下一个数字;否则,退出循环。以下是示例代码:


#include <iostream>

using namespace std;

int main() {

  int arr[100], n = 0;

  while (cin >> arr[n]) {

    n++;

    if (cin.get() == ',') continue;

    break;

  }

  for (int i = 0; i < n; i++) {

    cout << arr[i] << " ";

  }

  return 0;

}

代码解释:

- 声明一个大小为 100 的数组 arr 和一个整型变量 n,用于存储读取的数字和数组长度;

- 使用 while 循环读取逗号分隔的数字列表,每次读取一个数字并将其存储到数组 arr 中;

- 每次读取完一个数字后,使用 cin.get() 函数检查下一个字符是否为逗号,如果是,继续读取下一个数字;否则,退出循环。

- 最后,使用 for 循环输出数组中存储的数字。

方法二:使用 stringstream 类

stringstream 是 C++ 中的一个实用类,它可以对字符串进行输入、输出和操作,是一种处理字符串的常见方式。使用 stringstream 类来处理带逗号分隔的数字列表是一种更灵活的方法。以下是示例代码:


#include <iostream>

#include <sstream>

using namespace std;

int main() {

  string input;

  int arr[100], n = 0;

  getline(cin, input);

  stringstream ss(input);

  while (ss >> arr[n]) {

    n++;

    if (ss.peek() == ',') ss.ignore();

  }

  for (int i = 0; i < n; i++) {

    cout << arr[i] << " ";

  }

  return 0;

}

代码解释:

- 通过 getline 函数从标准输入中获取一个字符串 input,该字符串中包含逗号分隔的数字列表;

- 使用 stringstream 类将字符串 input 转换为一个输入流 ss,然后使用 while 循环逐个读取其中的数字,并将其存储到数组 arr 中;

- 在循环中检查下一个字符是否为逗号,如果是,使用 ignore 函数跳过该字符;

- 最后,使用 for 循环输出数组中存储的数字。

这两种方法都是处理带逗号分隔的数组的有效方式,具有简单易懂、灵活性强等特点,在 C++ 编程中经常用到。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复