当从std::cin
读取时,即使我只想读取一个字符。它将等待用户插入任意数量的字符,然后单击Enter
继续!
我想逐个字符地读取字符,并在用户在终端中键入时对每个字符执行一些指令。
示例
如果我运行这个程序并键入abcd
,那么Enter
的结果将是
abcd
abcd
但我希望它是:
aabbccdd
下面是代码:
int main(){
char a;
cin >> noskipws >> a;
while(a != '\n'){
cout << a;
cin >> noskipws >> a;
}
}
请问怎么做?
5条答案
按热度按时间brqmpdu11#
以C++友好的方式从流中读取单个字符的最佳方法是获取底层streambuf并使用sgetc(a)/次会议c()方法。但是,如果cin是由终端提供的,(典型情况)则终端可能启用了行缓冲,所以首先你需要设置终端设置来禁用行缓冲。2下面的例子也禁用了字符的回显。
ghhkc1vu2#
C++ cin模型是用户在终端中编写一整行,退格并在必要时进行纠正,然后当他高兴时,将整行提交给程序。
你不能轻易地打破它,也不应该打破它,除非你想控制整个终端,比如让一个小人在一个由按键控制的迷宫里游荡。要做到这一点,在Unix系统上可以使用curses. h,在DOS系统上可以使用conio. h。
s2j5cfk03#
我认为你应该自己写一个结构体。像我一样,我使用
但这有一个弱点,我必须写正确,不能删除和改写像使用cin
ia2d9nvy4#
请看:
zour9fqk5#