繁体   English   中英

cin不将输入作为ENTER

[英]cin doesn't take input as ENTER

char ch[4];  
char* ptr;  
ptr = ch;  
while(1)  
{  
  cin >> *ptr;  
if(*ptr == '\n')  
break;  
ptr++;  
}

在这里,我只写了一些示例代码,试图在用户编写ENTER时退出while循环,但无法正常工作。 请帮我。 先感谢您。

要获取单个字符,请使用std::istream::get 这也应该用于换行。

但是,为什么不使用字符std::getline而不是让字符循环直到获得换行符呢?

std::string str;
std::getline(cin, str);

或者,如果您只想获取最多三个字符,则可以使用std::istream::getline

char ch[4];
cin.getline(ch, 4, '\n');

您正在将输入读入一个字符的值。 这就是*ptr意思。 我认为您只需要简单的ptr,即指向字符数组的指针,这是用于接收数据的东西。 您写的基本上是这样的:

char c;
cin >> c;

我不认为这是您的意思,即使它起作用也不会起作用,因为正如Joachim Pileborg在上面指出的那样, >>运算符像换行符一样跳过空格。 通常,在读取输入时,最好总是非常健壮。 提供足够的空间,并使用可以自动增长的变量(如std::string )或告诉系统您有多少空间(如fgets() )。

下面将读取一行:

istream& getline (char* s, streamsize n );

提取运算符将跳过前导空白,并在遇到任何后续空白时停止执行。 因此,当您想执行此类操作时,请使用std :: istream :: get()或std :: istream :: getline()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM