char ch[4];
char* ptr;
ptr = ch;
while(1)
{
cin >> *ptr;
if(*ptr == '\n')
break;
ptr++;
}
这里我只是写了一些示例代码,我试图在用户写入ENTER时退出while循环,但它无法正常工作。请帮我。提前谢谢。
答案 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()。