21xrx.com
2025-03-21 02:15:08 Friday
文章检索 我的文章 写文章
C++如何编写支持分行输入的程序
2023-06-23 17:37:01 深夜i     --     --
C++ 编写 分行输入 程序

C++作为一种面向对象的编程语言,一般情况下只能通过cin对象进行标准输入,而无法进行分行输入,这对一些需要输入大量数据或者需要分行输入的程序来说是很麻烦的。那么如何编写支持分行输入的程序呢?本文将为大家介绍几种方法。

方法一:使用fgets函数

fgets函数是C语言中用于读取字符串的函数,它可以将输入的数据以行为单位读取。在C++中,可以使用fgets函数实现分行输入功能。例如,以下代码可以实现分行输入n个数,并将其存储在一个数组中:

const int MAXN = 10000; // 定义数组的最大长度
char str[MAXN];
int main()
{
  fgets(str, MAXN, stdin);
  int num[MAXN], pos = 0;
  const char* delim = " \r\n\t"; // 定义分隔符
  char* p = strtok(str, delim);
  while(p != NULL)
  {
    num[pos++] = atoi(p);
    p = strtok(NULL, delim);
  }
  for(int i = 0; i < pos; i++)
    cout << num[i] << " ";
  return 0;
}

fgets函数中的第一个参数为读入的字符串数组名,第二个参数为数组的大小,第三个参数为输入流,可以使用stdin指定输入流为标准输入流。

方法二:使用getline函数

不仅可以使用C语言中的fgets函数实现分行输入功能,在C++中也可以使用getline函数。函数的使用方法和C语言中类似,只需要将输入流参数改为cin即可。例如,以下代码可以实现分行输入n个字符串,并将其存储在一个字符串数组中:

const int MAXN = 10000; // 定义数组的最大长度
string str;
string s[MAXN];
int main()
{
  getline(cin, str);
  stringstream ss(str);
  int pos = 0;
  string tmp;
  while(ss >> tmp) s[pos++] = tmp;
  for(int i = 0; i < pos; i++)
    cout << s[i] << endl;
  return 0;
}

在这个例子中,使用了stringstream将字符串转换成一个字符串流,并使用字符串流提供的输入流运算符“>>”进行输入。

总结:

本文介绍了两种实现分行输入的方法,解决了C++中无法支持分行输入的问题。虽然这两种方法实现起来有些麻烦,但是却能够很好地解决实际问题,具有一定的参考价值。希望对读者有所帮助。

  
  
下一篇: C++6.0 代码大全

评论区