cin 不接受输入作为输入

cin doesn't take input as ENTER

本文关键字:输入 cin 不接受      更新时间:2023-10-16
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()。