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()。