尝试在c++中读取一行键盘输入

Trying to Read a Line of Keyboard Input in C++

本文关键字:一行 键盘 输入 c++ 读取      更新时间:2023-10-16

我正试图用c++完成一项大学作业,我在一个非常基本的操作上遇到了麻烦。我正试图从键盘上读取一串字符。这是相关代码:

  string t;
  cout << endl << "Enter title to search for: ";
  getline(cin, t, 'n');  

我明白,最后一行应该读取输入缓冲区(在本例中为cin)并将字符存储在't'字符串中,直到它到达一个新的行字符,然后继续程序流程。

然而,当我在XCode中运行我的代码时,它只是跳过getline函数并将't'视为空字符串。

怎么回事?我试过使用cin >> t,但那只是永远读取字符-为什么我不能得到这个行为?

输入操作明显被跳过的原因很可能是(这意味着,忽略了多bug的XCode IDE可能的特性)您之前执行了一些输入并且在输入缓冲区中留下了一个换行符。

要解决这个问题,请确保在逻辑上应该消耗一行输入的每个输入操作之后清空输入缓冲区。

一个简单的方法是总是使用getlinestring,然后使用例如istringstream,如果你想转换一个数字规格到数字类型。

干杯,hth。

从docs页面来看,你想要

cin.getline(t,256,'n');

这听起来像是Xcode运行程序的方式存在问题。尝试直接从终端运行您的程序,看看这是否足以解决您的问题。