21xrx.com
2024-12-27 21:37:41 Friday
登录
文章检索 我的文章 写文章
C++如何实现多行输入
2023-06-23 10:29:18 深夜i     --     --
C++ 多行输入 cin getline() getline()函数 vector容器

在C++中,当需要让用户输入多行数据时,可以使用几种方法来实现。这些方法包括使用循环和控制台缓冲区等,下面将逐一介绍。

一种实现多行输入的方法是使用循环语句。可以使用for或while循环语句,设置循环次数为需要输入的行数。在每一次循环中,使用cin读取一行数据,并将其存储在一个字符串中。最后将输入的所有字符串合并起来,即可得到多行输入的结果。下面是一个示例程序:


#include <iostream>

using namespace std;

int main()

{

  int n;

  string s, input;

  cout << "请输入需要输入的行数:";

  cin >> n;

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

    cout << "请输入第" << i+1 << "行数据:";

    cin.ignore(); //清空cin缓存区

    getline(cin, s);//读取一行数据

    input += s + "\n";//字符串拼接

  }

  cout << "输入的所有数据为:" << endl;

  cout << input << endl;

  return 0;

}

另一种实现多行输入的方法是使用控制台缓冲区。在Windows下,可以使用GetConsoleScreenBufferInfo函数获取控制台缓冲区信息,进而获取控制台当前光标位置和滚动条位置等信息。当输入多行数据时,将光标位置向下移动一行,然后使用cin读取用户输入的数据。不断重复这个过程,即可实现多行输入。下面是一个示例程序:


#include <iostream>

#include <windows.h>

using namespace std;

int main()

{

  int n;

  string input = "";

  HANDLE hStdout;

  CONSOLE_SCREEN_BUFFER_INFO csbi;

  hStdout = GetStdHandle(STD_OUTPUT_HANDLE);

  GetConsoleScreenBufferInfo(hStdout, &csbi);

  cout << "请输入需要输入的行数:";

  cin >> n;

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

    csbi.dwCursorPosition.Y++;

    SetConsoleCursorPosition(hStdout, csbi.dwCursorPosition);

    cout << "请输入第" << i+1 << "行数据:";

    cin >> input;

  }

  csbi.dwCursorPosition.Y++;

  SetConsoleCursorPosition(hStdout, csbi.dwCursorPosition);

  cout << "输入的所有数据为:" << endl;

  cout << input << endl;

  return 0;

}

总体来说,C++实现多行输入的方法比较灵活。根据实际需求和实现效率,可以选择其中一种或多种方式来实现。无论采用哪种方式,一定不能忘记在每次输入之前清空cin缓存区。

  
  

评论区

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