cin 不接受输入作为输入
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()。
相关文章:
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 在C++中使用Cin,我如何在1行中输入
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- cin 的十进制输入验证?
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 从 cin 读取不会返回整个输入字符串
- CIN 仅在输入非数字值时跳过下一个 CIN
- 当输入在带有空格的单行中给出时,cin 如何在 while 循环中工作?
- C++ 限制或使用户输入不可见 (std::cin)
- 为 c++ cin 上的输入数无效生成错误消息
- 从 cin 获取 c++ 中结构中多个枚举的输入
- 为什么 std::cin 不提示用户输入?
- C++ CIN 值返回 0 而不是输入值
- 为什么从 std::cin 读取输入后右括号字符的值有时不是")"?
- 为什么不能通过在错误输入后设置 std::cin.clear() 来使用 std::cin?
- :CIN 不断打印用户在每次循环后输入的内容
- 设置输入(CIN)的超时
- 如何将输入(CIN)字符的用户转换为ASCII代码
- 不能在一行中输入 (cin) 超过 10 个整数,以空格分隔到数组中
- 函数结构数组输入cin问题