21xrx.com
2025-03-28 13:50:27 Friday
文章检索 我的文章 写文章
C++ 输入带逗号分隔的数组
2023-07-04 14:39:51 深夜i     20     0
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++ 编程中经常用到。

  
  

评论区

请求出错了