草庐IT

c++ - cin 在读取错误类型时会覆盖我的初始化值吗?

这个问题在这里已经有了答案:Whydoesstringstream>>changevalueoftargetonfailure?(2个答案)关闭5年前。所以这是一个非常基本的问题,而且非常琐碎,但我只是通过C++中的编程原则和实践,我的读取字符串和int的程序的行为与BjarneStroustrup写的书不同,所以我是如果他犯了错误,他会感到惊讶。无论如何,这是代码:#include"..\std_lib_facilities.h"intmain(){cout>first_name>>age;//readastringfollowedbyanintegercout当我在提示符下向终端输

c++ - getline(cin.name) 被跳过

我从C++中的一个函数调用一个函数,该函数具有getline(cin,name)行,其中name是一个字符串。第一次通过循环时,程序不等待输入。它将通过循环的所有其他传递。有什么想法吗?voidgetName(string&name){intnameLen;do{cout 最佳答案 确保自上次从cin读取内容后没有遗漏,例如:在你的程序的前面一点:intnumber;cin>>number;您提供的输入:5程序后面:getline(cin,name);和getline似乎不会被调用,而是它收集了您上次输入时的换行符,因为当您使用ci

c++ - 在 Ctrl+Z (EOF) 后恢复从 iostream::cin 读取? ("ignore"不起作用)

为什么当我们只为内部循环提供ctrl+z时,下面程序中的外部循环会终止?#includeintmain(){strings1,s2;while(cin>>s1){cout>s2)cout 最佳答案 按Ctrl+z(在Windows上)关闭标准输入流。一旦关闭,它就会保持关闭状态。内循环完成后,它不会神奇地重新打开。没有理由会这样。 关于c++-在Ctrl+Z(EOF)后恢复从iostream::cin读取?("ignore"不起作用),我们在StackOverflow上找到一个类似的问题

C++ Cin 输入到数组

我是c++的初学者,我想将一个字符串作为一个字符一个字符地输入到一个数组中,这样我就可以实现一个反向函数。但是与C不同的是,当输入被击中时,'\n'没有被插入在流中..如何停止输入数据?我的代码是:#include#include#defineSIZE100usingnamespacestd;char*reverse(char*s){arrayb;intc=0;for(inti=(SIZE-1);i>=0;i--){b[i]=s[c];c++;}returns;}intmain(){cout>a[i];i++;}while(a[i-1]!='\0');reverse(a);return

c++ - 尺寸较大的 cin.getline( )

#includeusingnamespacestd;intmain(){chartest[10];charcont[10];cin.getline(test,10);cin.getline(cont,10);cout当我输入时:12345678901234567890输出是:123456789cont似乎是空的。谁能解释一下? 最佳答案 如果输入太长,istream::getline会设置失败位,从而阻止进一步的输入。将您的代码更改为:#includeusingnamespacestd;intmain(){chartest[10];

c++ - 从 Bash 将输入通过管道传递给 C++ cin

我正在尝试编写一个简单的Bash脚本来编译我的C++代码,在这种情况下,它是一个非常简单的程序,它只是将输入读入vector,然后打印vector的内容。C++代码:#include#include#includeusingnamespacestd;intmain(){vectorv;strings;while(cin>>s)v.push_back(s);for(inti=0;i!=v.size();++i)coutBash脚本run.sh:#!/bin/bashg++main.cpp>output.txt因此编译我的C++代码并创建a.out和output.txt(这是空的,因为没有

c++ - 在 std::cout 之后使用 std::cin 时换行符来自哪里?

考虑下面的简单例子#includeintmain(){usingnamespacestd;charname[30];cout>name;cout该程序的示例输出如下:Whatisyourfirstname:BobHelloBob该程序按预期工作,但我不明白输出流如何知道转到下一行。我基本上是在考虑两个独立的信息流,并且对输出流如何知道进入下一个只是因为它后面跟着输入感到困惑。换行符从哪里来?? 最佳答案 输出流不会转到下一行。您在键入名称后按了Enter。终端有本地回显,这意味着您在键盘上输入的字符会回显到终端。您在屏幕上看到的“B

c++ - 创建一个字符串变量并要求在同一行输入?

我绝对讨厌编程中这些不必要的步骤,在这些步骤中,您在一行中声明并分配一个变量,然后在下一行请求输入。为了简短起见,我想创建一个变量并要求在同一行上输入所有内容。目前我正在编写这样的代码:stringname="";cout>name;//Toomanystepsfornoreason这是我的目标:stringname=cin>>name显然,该行在C++中不起作用,如果我闭上眼睛并掠夺它,它也不会起作用。有什么小技巧吗?我的意思是在分配数组时可以使用for循环,那么为什么不在一行中声明和输入分配呢?我知道读者会试图跳出窗外。goto证明了这个理论,是的,我自豪地使用它:)感谢任何帮助!

c++ - 使用 std::cin 时如何限制可见的用户输入?

我正在寻找一种使用std::cin限制可见用户输入的方法。#includeintmain(){std::cout>planet;//Duringtheprompt,only"accept"xcharacters}如果用户在按下enter之前输入earth或任何其他超过4个字符的单词,他们会看到什么:Enteryourplanet:eart假设字符限制为4,请注意缺少'h'。一旦超出字符限制,控制台将不再显示任何其他字符。这是在您按下回车键之前。有点像在输入框中输入密码字段,但它只允许5个字符,因此输入任何其他字符都不会被注意到更好的类比是HTML中文本输入的maxlength属性。

c++ - 另一个 C++ cin 循环问题

更新我找到了问题的原因。我一直在试验fish壳。我看到有人在Mac上成功运行我的代码的评论,并决定在标准bashshell中尝试一下。它工作得很好。所以,我猜没有更多的鱼壳了。:)我仍然很高兴知道cin如何以及为什么以它的方式工作。这是我的问题的主要部分。我遇到了一个流行的问题:在循环中使用cin。代码很简单,但我找不到解决方案。Google提供给我的答案多种多样,但通常涉及cin.clear()、cin.ignore()和cin.get()的某种组合。不幸的是,我无法找到解决我问题的组合或顺序。此外,令我沮丧的是我对cin的功能没有完全的理解。我宁愿不使用反复试验来解决这个问题。我想