cin不接受输入作为ENTER

时间:2012-04-16 06:30:15

标签: c++ cin

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

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

4 个答案:

答案 0 :(得分:6)

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

但是,在获得换行符之前,不要在循环中获取字符,为什么不使用类似std::getline的内容:

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

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

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

答案 1 :(得分:1)

您正在读取字符值的输入。这就是*ptr的含义。我想你只想要普通的ptr,它是指向一个字符数组的指针,这是一个用于接收数据的东西。你写的基本上是这样的:

char c;
cin >> c;

我认为这不是你的意思,即使它也不会起作用,因为正如Joachim Pileborg所指出的那样,>>运算符会像新行一样跳过空白。一般来说,在阅读输入时总是最好的。提供足够的空间,并使用可自动增长的变量(如std::string)或告诉系统您有多少空间(如fgets())。

答案 2 :(得分:1)

以下将读一行:

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

答案 3 :(得分:1)

提取运算符将跳过前导空格并在遇到任何后续空格时停止执行。所以,当你想做这样的事情时,使用std :: istream :: get()或std :: istream :: getline()。