21xrx.com
2024-11-22 05:38:07 Friday
登录
文章检索 我的文章 写文章
C++实现多行输入的方法
2023-07-05 08:40:55 深夜i     --     --
C++ 多行输入 getline cin string

在C++中,多行输入是一个常见的需求,例如在读入一篇文章或者一个长文本内容的时候,需要逐行读入。在这种情况下,如果只使用cin输入流会非常麻烦,需要在每个输入行末尾敲入“回车”键。针对这个问题,本文将介绍几种实现多行输入的方法。

1. 使用getline方法

getline函数可以用于从输入流中读入一行字符串,直到遇到换行符为止。它的语法非常简单:

getline(cin, str); // str为一个字符串变量

其中,cin表示从标准输入流中读入字符串,str就是我们要存储读取数据的字符串变量名。每读入一行数据,就会自动在读完该行后把换行符丢弃掉。

getline函数在一些场景下非常适用,例如读入一个字符串数组或者一组有规律的数据。但是对于每个输入数据行都无法预先知道长度的情况下,该方法就不太适用了。

2. 使用while循环

可以使用while循环从输入流读入多行数据,当遇到行末时结束。下面是一段示例代码:

string str;

while (getline(cin, str)) 可以将其存入一个vector或者数组中

这种方法需要利用while循环不断读取输入流直到遇到行末,然后将读取到的一行存入一个vector或数组当中。当全部读取完毕时,退出循环即可。

3. 使用自定义分隔符

可以通过自定义分隔符来读取多行输入,这种方法可以满足所有输入行未知长度的情况。使用自定义分隔符的方法也比较简单,只需要在读取输入之前,将cin输入流的分隔符设定为需要的字符即可。

例如设定分隔符为换行符:

char ch;

string str;

cin.get(ch);

while (ch != '\xff') {

  if (ch == '\n')

    // 处理读入的一行数据

    cout << str << endl;

    str = "";

   else {

    str += ch;

  }

  cin.get(ch);

}

在这个示例代码中,首先用cin.get()方法读入一个字符,判断当前字符是否是换行符,如果是就代表读取了一行数据。然后再将这一行数据处理,同时清空str字符串,准备读入下一行。当读取的字符等于EOF时,退出循环。

以上就是三种实现多行输入的方法了,大家可以根据实际需求进行选择,以适应自己的项目。不过,需要注意的是要根据输入内容的实际情况来选用最优的方法,以提高代码的效率和性能。

  
  

评论区

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