Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不使用conio.h库读取输入_C++_Getch - Fatal编程技术网

C++ 不使用conio.h库读取输入

C++ 不使用conio.h库读取输入,c++,getch,C++,Getch,首先,我读了一些参考资料并用谷歌搜索了一下。但是,如果不使用getch(),如果不按enter键,我无法找到任何读取输入的方法。而getchar()cin>>和getline()需要输入才能读取输入。我在和在线评委练习提问,他们不接受conio.h图书馆。有办法吗?谢谢 顺便说一句,我的目标是让每个按下的数字进入一个数组。要读取数字,只需使用std::cin,我不明白您为什么不想按Enter键确认通过的数字 当您一个字符接一个字符地读取字符时,如果您希望能够更正部分输入的数字,您必须编写额外的代

首先,我读了一些参考资料并用谷歌搜索了一下。但是,如果不使用
getch()
,如果不按enter键,我无法找到任何读取输入的方法。而
getchar()cin>>和getline()
需要输入才能读取输入。我在和在线评委练习提问,他们不接受conio.h图书馆。有办法吗?谢谢


顺便说一句,我的目标是让每个按下的数字进入一个数组。

要读取数字,只需使用
std::cin
,我不明白您为什么不想按Enter键确认通过的数字

当您一个字符接一个字符地读取字符时,如果您希望能够更正部分输入的数字,您必须编写额外的代码-您必须处理退格、箭头、删除,以及与箭头组合时可能出现的Home、End、Shift行为。。。这需要大量的工作。

istream&getline(istream&is,string&str)
,用法:

#include<iostream>
int main(){
    std::string output;
    std::getline(std::cin, output);
}

正如您所看到的,数字是一个接一个美丽的集合,关于
n
的数字更多也有关于
n
的代码更多。如何使用它?简单:只需在
char
之后使用
char
,每个字符减少
48
'0'
,以获得更好的可读性,将数字作为数字。

在线评委有3种输入类型:argc/argv(无需直接读取)、标准输入(基于行)和文本文件(也基于行)。这就是为什么您不需要“conio.h库”。顺便说一句,没有标准的conio.h,所以评委甚至不知道你用的是哪一个
std::getline
顾名思义就是标准的getline。哦,我明白了。我认为这个问题是基于行的。所以没有办法把每个数字作为一个单一的输入?例123变为arr[3]={1,2,3};因为getline只将123作为一个数字返回。您已经提到了
cin>
。从某种意义上说,这仍然是行基,输入时需要一个行尾,它不会读取超过该行尾的数据,但您可以一次读取整个数字。如果您正在读取浮点数,
cin>
甚至会读取
123.45
什么是
arr
的元素类型?这是因为我需要将“1”“2”“3”作为分隔的数字放入数组中。如果我使用cin>>输入,输入是123。它只会返回“123”,想象你在玩一个蛇的游戏,每次你改变方向时都必须按回车键。我不明白为什么C++中没有标准的方法来做这个。@ NWP是的,这很烦人,但是也没有标准的方法来移动文本光标,改变文本的颜色和背景,所以我不认为有人想要写蛇没有这个:)当然,有LIBARIs做它,但其中一些还包含类似于
getch()
,这可能是一个可移植的解决方案;)这并不能回答这个问题。若要评论或要求作者澄清,请在他们的帖子下方留下评论。@Syon是的,问题很不清楚,我在阅读一些评论之前写了这个答案,我想他希望在示例
int
s的数组中有一些
stdin
中的数字。不澄清问题是不好的。输入将是A和B。1您可以编写
int-arr[]=new-int[nr\u的数字]/*在此处使用数组*/delete[]arr是;它还返回int,所以我也减少了48。但是关于getline();对不起,我还是不明白如何使用getline(cin,input)获取每个数字。当您键入“123 45”时,请输入“enter”。数组将为[1,2,3,-16,4,5]。(空间为32-48)。thanks@user3411184
仍然不知道如何使用getline(cin,input)获取每个数字。
-我不确定您想要实现什么。。。若您不希望所有数字都在一个数组中,只需在找到分隔符时开始写入另一个目标。
char  code
 '0'==48
 '1'==49
 '2'==50
 '3'==51
 '4'==52
 '5'==53
 '6'==54
 '7'==55
 '8'==56
 '9'==57