草庐IT

c++ - 使用 cin 的良好输入验证循环 - C++

我正在上第二堂OOP类(class),第一个类是用C#教授的,所以我是C++新手,目前我正在练习使用cin进行输入验证。所以这是我的问题:这个循环是不是我构建了一个很好的验证输入的方法?还是有更常见/被接受的方法?谢谢!代码:inttaxableIncome;interror;//inputvalidationloopdo{error=0;cout>taxableIncome;if(cin.fail()){cout 最佳答案 我不太喜欢为iostream开启异常。I/O错误还不够异常,因为错误通常很可能发生。我更喜欢只对不太常见的错

c++ - 为什么 cin >> string 不能与 Visual C++ 2010 一起使用?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭9年前。#includeusingnamespacestd;intmain(){strings;cin>>s;cout这行不通。为什么? 最佳答案 因为你忘了#include 关于c++-为什么cin>>string不能与VisualC++2010一起使用?,我

c++ - cin.ignore(numeric_limits<streamsize>::max(), '\n')

cin.ignore(numeric_limits::max(),'\n')是什么意思?在C++中是什么意思?它实际上是否忽略了用户的最后输入? 最佳答案 此行忽略当前行的其余部分,直到'\n'或EOF-以先到者为准:'\n'设置分隔符,即cin之后的字符停止忽视numeric_limits::max()设置要忽略的最大字符数。由于这是流大小的上限,因此您实际上是在告诉cin忽略的字符数没有限制。 关于c++-cin.ignore(numeric_limits::max(),'\n'),

c++ - 告诉 cin 在换行符处停止阅读

假设我想从输入中读取第a行整数,如下所示:12345\n我希望cin在'\n'字符处停止,但cin似乎无法识别它。下面是我用的。vectorgetclause(){charc;vectorcl;while(cin>>c&&c!='\n'){cl.push_back(c);cin>>c;}returncl;}我应该如何修改它以便cin在看到'\n'字符时停止? 最佳答案 使用getline和istringstream:#include/*....*/vectorgetclause(){charc;vectorcl;std::strin

c++ - 输入字符串时使用 cin 无限循环,而需要输入数字

在下面的循环中,如果我们在cin输入中键入字符而不是预期的数字,那么它将进入无限循环。谁能给我解释一下为什么会这样?当我们使用cin时,如果输入的不是数字,那么有没有办法检测到这一点来避免上述问题?unsignedlongul_x1,ul_x2;while(1){cin>>ul_x1>>ul_x2;cout 最佳答案 嗯,你总是会有一个无限循环,但我知道你真正想知道的是,为什么cin不会在每次循环迭代时不断提示输入,从而导致你的无限循环自由运行。原因是因为cin在您描述的情况下失败,并且不会再读取这些变量的任何输入。通过给cin错误

C++按键: getch, cin.get?

我有一个循环运行的Win32程序。我希望能够在等待按键时暂停该程序。无论我使用“任意键”还是特定键都没有关系,但我需要让程序卡住,直到我按下某个键。我想知道我应该使用哪个命令。我正在使用VisualC++,编译器无法识别以下任何命令:cin.get()std::cin.get()getch()我对C++比较陌生。我知道在控制台应用程序中这是一个相当简单的操作(cin.get),但在Win32中可能会更加困难。任何简单的解决方案或解决方法将不胜感激。该程序是为单个科学实验定制的,所以现在我不会担心解决方案有点拙劣(!)如果我错过了问题中的任何重要信息,我们深表歉意。

c++ - std::cin.getline() 与 std::cin

什么时候应该使用std::cin.getline()?它与std::cin有什么不同? 最佳答案 我们来看看std::cin.getline()分开。首先,有std::.这是标准库所在的命名空间。它有数百种类型、功能和对象。std::cin就是这样一个对象。它是标准字符输入对象,在中定义.它有自己的一些方法,但您也可以将它与许多免费功能一起使用。这些方法和函数中的大多数都是从标准输入中获取一个或多个字符的方法。最后,.getline()是std::cin的一种方法(和其他类似的对象)。你告诉它应该从左侧的对象中获取多少个字符(此处为

c++ - cin 和 getline 跳过输入

这个问题在这里已经有了答案:Whydoesstd::getline()skipinputafteraformattedextraction?(5个回答)关闭6年前。之前我发布了一个关于cin跳过输入的问题,我得到了要刷新的结果,并使用istringstream,但现在我尝试了所有可能的解决方案,但它们都不起作用.这是我的代码:voidcreateNewCustomer(){stringname,address;cout但我仍然得到同样的东西,跳过输入,当它接受输入时,它接受它们并在名称中存储空任何内容,并且在地址中它接受我在名称中写的内容,但从第二个字母到结束我的代码有什么问题?我尝试

c++ - 从 std::cin 读取密码

我需要从标准输入读取密码并且希望std::cin不回显用户键入的字符...如何禁用std::cin的回显?这是我目前正在使用的代码:stringpasswd;cout我正在寻找一种与操作系统无关的方法来执行此操作。Here在Windows和*nix中都有办法做到这一点。 最佳答案 @wrang-wrang的回答非常好,但没有满足我的需求,这就是我的最终代码(基于this)的样子:#ifdefWIN32#include#else#include#include#endifvoidSetStdinEcho(boolenable=true

c++ - 为什么 cout 和 cin 使用按位移位(<< 和 >>)?

问题确实在标题中;我确信有一些合乎逻辑的东西,但现在我很难过! 最佳答案 根据TheDesignandEvolutionofC++的§8.3.1:TheideaofprovidinganoutputoperatorratherthananamedoutputfunctionwassuggestedbyDougMcIlroybyanalogywiththeI/OredirectionoperatorsintheUNIXshell(>,>>,|,etc.)[...]Severaloperatorswereconsideredforinp