[英]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.