草庐IT

c++ - cout 和 cin 不是函数,那么它们是什么?

一般在C语言中我们认为printf和scanf是函数。当谈到cout和cin时,在C++中它们是什么?我的意思是它们不能是函数,因为它们后面没有括号,所以它们不是函数。那么什么是cout和cin是标准输入输出函数?还是别的? 最佳答案 std::cout和std::cin是类的全局对象std::ostream和std::istream他们分别重载了运算符和>>.你应该阅读operatoroverloading.cout这就像一个函数调用;该函数是一个重载运算符和一个快捷方式:cout.operator或者这个:operator取决于

c++ - Qt 可以使用 cin 吗?

在Qt中可以使用cin吗?我可以使用cout但找不到有关如何在Qt控制台应用程序中使用cin的示例。 最佳答案 我测试了KalebPederson的答案,并找到了比他提出的解决方案更简洁的方法(尽管我必须感谢他为我指明了正确的方向):QTextStreamqtin(stdin);QStringline=qtin.readLine();//ThisishowyoureadtheentirelineQStringword;qtin>>word;//Thisishowyoureadaword(separatedbyspace)atatim

c++ - 如何让cin只接受数字

这是代码doubleenter_number(){doublenumber;while(1){cin>>number;if(cin.fail()){cin.clear();cin.ignore(numeric_limits::max(),'\n');cout我的问题是,当我输入类似1x的内容时,1被当作输入,而没有注意到为另一次运行而遗漏的字符。有什么方法可以使它与任何实数一起使用,例如1.8? 最佳答案 当cin遇到无法正确读入指定变量的输入时(例如将字符输入整数变量),它会进入错误状态并将输入留在缓冲区中。您必须做几件事才能正确

c++ - 是否可以为 std::cin 设置超时?

是否可以为std::cin设置超时?例如,std::cin在10秒内没有收到任何数据-它抛出异常或返回错误。已编辑:Boost库中的计时器呢?据我所知,它是可移植图书馆。是否可以要求Boost库的计时器在预定义的时间段后抛出异常?我想它可以解决这个问题。 最佳答案 无法以可移植的方式为std::cin设置超时。即使采用不可移植的技术,这样做也并非易事:您需要替换std::cin的流缓冲区。在UNIX系统上,我会将std::cin使用的默认流缓冲区替换为使用文件描述符0读取输入的自定义流缓冲区。要实际读取输入,我会使用poll()来检

c++ - char 数组的 cin 和 cin.get() 之间的区别

我有这两个代码:chara[256];cin>>a;cout和chara[256];cin.get(a,256);cin.get();cout也许,相对于没有cin.get()的第二个;chara[256];cin.get(a,256);cout我的问题是(第一个):对于字符数组,我应该使用什么?cin或cin.get()?为什么我应该使用cin.get();我的char初始化后没有参数?我的第二个问题是:我的C++老师教我每次使用cin.get()进行初始化字符,并在每次初始化char数组或int数组或只是int或其他任何东西之后,再次将cin.get();在它之后。这就是我最初想问

c++ - 如何知道 std::cin 是否来自重定向?

假设我有一个像这样的小程序:intmain(){cout">param;//Doingsomecalculations...cout我只想在输入来自控制台时打印参数请求,但如果程序是用重定向myApp.exe启动的那么我认为打印它毫无意义。我怎样才能实现这种行为?编辑-我在Windows上工作。 最佳答案 此答案基于@JoachimPileborg评论#include#includeboolisInputRedirected(){return(!(_isatty(_fileno(stdin))))}OriginalsourceinM

c++ - 使用 'unsigned int' 读取 'cin'

我正在尝试使用cin读取unsignedint,如下所示:#include#includeusingnamespacestd;intmain(intargc,char*argv[]){unsignedintnumber;//UINT_MAX=4294967295cout>number;//Checkifthenumberisavalidunsignedintegerif((numberUINT_MAX)){cout但是,每当我输入一个大于无符号整数上限(UINT_MAX)的值时,程序就会显示3435973836。如何检查用户给出的输入是否介于0到UINT_MAX之间?

C++:帮助解决 Linux 和 Windows 之间的 cin 差异

我有一个我编写的Win32控制台程序,它运行良好。该程序从用户那里获取输入并执行一些计算并显示输出——标准的东西。为了好玩,我试图让程序在我的Fedora机器上运行,但是当用户输入与我的变量类型不匹配的内容时,我遇到了清除cin的问题。这是有问题的代码:voidCParameter::setPrincipal(){doubleprincipal=0.0;cout>principal;while(principal>principal;}}m_Parameter=principal;此代码适用于Windows。例如,如果用户尝试输入char数据类型(相对于double),则程序会通知用户

c++ - Linux 中的 Cout 和 Cin - 看不到控制台

我刚从Windows迁移到Linux,我尝试创建一个简单的应用程序来打开控制台、显示消息并等待按键关闭。我在Windows上创建了它并且它可以工作,然后我将文件移动到Linux。没有做任何更改,只是用g++编译它,我没有得到任何错误。问题是在Linux(Ubuntu12.04)上我看不到控制台和一些消息要求我在关闭前按任意键。我的代码就这么简单:#include#includeintmain(){cout在Windows上,当我启动可执行文件时,控制台窗口会显示消息并在按任意键时关闭。在Linux上,当我执行程序时,我什么也得不到。它确实创建了testfile.txt文件并插入文本,因

c++ - 如何在特定时间后从 `std::cin` 超时读取

我写了一个小程序,intmain(intargc,char*argv[]){intn;std::cout>n;if(b)std::cout从std::cin读取是阻塞的,因此程序会一直等待,直到程序有外部中断(也像信号)或用户提供一些输入。我应该如何声明std::cin>>n等待用户输入一段时间(可能使用sleep()系统调用)?如果用户没有提供输入,并且在规定的时间(比如说10秒)完成后,程序应该继续执行下一条指令(即if(b==1)语句向前)。 最佳答案 这对我有用(注意这在Windows下不起作用):#include#incl