cin.getline() 正在跳过 C++ 中的输入[重复]

2024-02-13

如果我使用以下代码, getline 不会采用最后一个输入(对于“for”循环的最后一次迭代,它只是跳过它) -

int main()
{
    int n;
    map<string, set<string> > lst;
    string c,s,c2;

    cin>>n;

    for(int i=0;i<n;i++)
    {
            getline(cin,c); // here it skips the input for last iteration
            stringstream ss;
            ss<<c;

            bool f=1;
            while(ss>>s)
            {
                        if(f)
                        {
                             c2=s;
                             f=0;
                        }
                        else
                             lst[c2].insert(s);           
            }
    }

    for (map<string, set<string> >::const_iterator ci = lst.begin(); ci != lst.end(); ++ci)
    {
                cout<< (*ci).first <<" "<< (*ci).second.size() <<endl;
    }
}

为了摆脱它,我将 cin.ignore() 放在 getline 之后。现在它接受了所有输入,但我面临着一个新问题 -

#include<iostream>
#include<string>
#include<map>
#include<set>
#include<sstream>
#include<algorithm>

using namespace std;

int main()
{
    int n;
    map<string, set<string> > lst;
    string c,s,c2;

    cin>>n;

    for(int i=0;i<n;i++)
    {
            getline(cin,c);
            cin.ignore();
            stringstream ss;
            ss<<c;

            bool f=1;
            while(ss>>s)
            {
                        if(f)
                        {
                             c2=s;
                             f=0;
                        }
                        else
                             lst[c2].insert(s);           
            }
    }

    for (map<string, set<string> >::const_iterator ci = lst.begin(); ci != lst.end(); ++ci)
    {
                cout<< (*ci).first <<" "<< (*ci).second.size() <<endl;
    }
}

新问题是,在获取 c2 时,字符串的第一个字符被删除。例如,如果我将“England Jane Doe”作为 getline 的输入,则在 c2 中我将得到“ngland”。

现在如何摆脱这个问题?


This:

cin>>n;

只读取数字。
它留下了尾随'\n'在流上。

所以你的第一个电话getline()正在读取一个仅包含一个的空行'\n'

最好不要混合使用operator>> and std::getline()。您必须非常小心是否在流中留下了换行符。我发现每次从用户那里读取一行是最简单的。然后分别解析该行。

 std::string  numnber;
 std::getline(std::cin, number);

 int n;
 std::stringstream numberline(number);
 numberline >> n;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cin.getline() 正在跳过 C++ 中的输入[重复] 的相关文章

  • 是否可以通过引用以基类作为参数的函数来传递派生类

    假设我们有一个抽象基类IBase使用纯虚方法 接口 然后我们推导出CFoo CFoo2来自基类 我们有一个知道如何使用 IBase 的函数 Foo IBase input 这些情况下通常的场景是这样的 IBase ptr static ca
  • 无法在表适配器配置属性中找到对象“Web.config”的连接“MyConnName”

    I want to change the query in table adapter but it s not opening throwing an error Configure table Adapter Failed in pro
  • Windows CE 6.0 和运行时链接到调试 DLL /MDd

    我在 x86 PC 上使用 Windows CE 6 0 R3 我已经为该平台构建了 NK bin 和 SDK 但我有一些问题需要了解如何使用 MTd 调试 DLL 构建控制台应用程序 如果我尝试构建这个 main c with MDd i
  • 有没有办法让我的程序用更少的代码运行?

    我为学校作业编写了以下代码 它编译并打印所有正确的消息 但出于我自己的好奇心 我想知道我的代码是否可以缩短并且仍然有效 我尝试了 signal 而不是 sigaction 但我听说 sigaction 比 signal 更受青睐 此外 此任
  • 使用 pthread_cond_signal 优雅地终止线程被证明是有问题的

    我需要发射一堆线程 并希望优雅地将它们拉下来 我正在尝试使用pthread cond signal pthread cond wait实现这一目标 但遇到了问题 这是我的代码 首先是thread main static void thrma
  • 我可以将特定警告视为错误吗?

    以下是我有时在学生代码中看到的模式的简化版本 bool foobar int a int b if a lt b return true 当然 真正的代码要复杂得多 Visual Studio 报告警告 C4715 并非所有控制路径都会返回
  • 将字符串转换为字符并按降序排序(ascii)

    我正在创建一个程序 该程序将使用户输入整数 一个接一个 存储在数组中并按降序显示整数 该程序还要求用户输入一个字符串 使用以下命令将其转换为字符string toCharArray 我已经正确地按降序显示整数 问题是我不知道如何按降序显示字
  • 如何在 JScript 中解码 Base64 字符串

    我必须在 JScript 中解码 Base64 字符串 并且我已经尝试使用此代码来执行目的操作 var xmlDom new ActiveXObject Microsoft XMLDOM var el xmlDom createElemen
  • 在 C++ 中初始化指针

    可以在声明时将指针分配给值吗 像这样的东西 int p 1000 是的 您可以在声明时初始化指向值的指针 但是您不能这样做 int p 1000 是个地址运算符 并且您不能将其应用于常量 尽管如果可以 那会很有趣 尝试使用另一个变量 int
  • 二维数组的列求和

    我有一个IEnumerable
  • Docker 不遵循构建目录中的符号链接

    我正在对一个应用程序进行 Docker 化 其中涉及通过 Clang 将二进制文件与其他 C 文件链接 我们维护二进制文件的符号链接版本 因为它们在整个代码库中使用 我的 Docker 构建目录包含整个代码库 包括源文件以及这些源文件的符号
  • C++ 虚拟关键字与重写函数

    我正在学习c 并且正在学习virtual关键字 我在互联网上搜索试图理解它但无济于事 我进入编辑器并做了以下实验 期望它打印两次基本消息 因为我的印象是需要 virtual 关键字来覆盖函数 然而 它打印出了两条不同的消息 有人可以向我解释
  • 为什么我从 c# 到 js 得到不同的 MD5 哈希值?

    我有一个用于加密密码的 C 函数 System Security Cryptography MD5CryptoServiceProvider md5Provider new System Security Cryptography MD5C
  • Xamarin.Android JmDNS 绑定问题

    我开始研究 Xamarin Android 的 JmDNS 绑定 我设法构建了绑定 但无法从代码中引用它 https github com ytn3rd monodroid bindings tree master JmDNS https
  • 来自资源中 ImageSource 的 System.Drawing.Image

    我的问题与这个非常相似 wpf图像资源以及运行时在wpf控件中更改图像 https stackoverflow com questions 940592 wpf image resources and changing image in w
  • std::iota 的 iota 代表什么?

    我假设 i 是增量 a 是分配 但我无法弄清楚或找到答案 而且 它看起来与非标准非常相似itoa我认为这很令人困惑 C iota is not an acronym or an initialism It is the word iota
  • C 中函数“fgets”的参数太少

    每当我编译这个错误时 我都会收到该错误 但我不知道为什么 我直接从书上抄袭这个 有人可以帮忙吗 include
  • 使texture2D在运行时/脚本Unity3D中可读[重复]

    这个问题在这里已经有答案了 我有一个插件 可以让我访问 Android 手机图库中的图片 这给了我一个Texture2D类型的纹理 然后我想使用 GetPixels 函数对其进行编辑 但默认情况下它未设置为可读 如何使纹理可读 以便我可以在
  • WPF DataGrid 选定项

    我有一个 DataGrid 用户可以通过在最后一行输入数据来添加项目 我还有一个按钮可以删除当前选定的项目 但是 当选择最后一行 空 用于添加新项目 时 最后选定的项目将保留在 SelectedItem 中 因此 如果我打开窗口 选择最后一
  • 频繁插入已排序的集合

    我已经对集合 列表 进行了排序 并且我需要始终保持其排序 我目前在我的集合上使用 List BinarySearch 然后在正确的位置插入元素 我也尝试过在每次插入后对列表进行排序 但性能不可接受 有没有一种解决方案可以提供更好的性能 也许

随机推荐

  • NSWindow在showWindow后自动关闭

    我正在尝试在情节提要中打开 NSWindow 我已正确实例化控制器 窗口打开但立即消失 var sb NSStoryboard var vc NSWindowController IBAction func openWindow sende
  • 识别美丽汤中令人困惑的价值目标

    这是一个涉及Python的问题 美丽的汤 https www crummy com software BeautifulSoup bs4 doc 和 HTML 以及投资百科API https github com kirkthaker in
  • 洪水填充四路算法复杂度

    我已经搜索过 但似乎找不到洪水填充算法 四路版本 的复杂性 大 O 表示法的复杂度究竟是多少 时间复杂度为 O 4 mn mn 因为矩阵的每个单元最多被处理4次 例如 可以通过其顶部 底部 左侧或右侧单元格来调用特定单元格
  • OpenCV 绘制匹配错误

    我的代码由一个部分组成 我在其中对一组匹配进行排序并根据距离定义良好的匹配 当我尝试绘制匹配时 我收到错误 OpenCV Error Assertion failed i1 gt 0 i1 lt static cast
  • 如何使 pip 可用于 Windows 上的 git bash 命令行?

    我添加了pip我的 python site packages 目录中的安装文件夹到我的 PATH 但我仍然只能通过以下方式运行它python m pip在我的 git bash 中 只是pip给我command not found 我环顾四
  • PyQt5 - 如何在鼠标点击位置画一个点?

    我试图在主窗口上画一个点 但该点未显示 我尝试过绑定mousePressEvent to paintEvent 但效果不佳 这是我的代码的当前版本 也不起作用 我也尝试提出一个观点drawPoint方法 它也不起作用 import sys
  • Django - 如何从模型中选择特定列?

    我嗅了一下 找不到这个 但我确信它就在这里的某个地方 对这个潜在的双重帖子表示歉意 如果我有这个代码 return Story objects filter user request user id order by create date
  • Python 在 cv2.destroyWindow() 之后冻结

    我在 Mac OS X Lion 上的 Python 2 7 下使用 openCV 每当我运行代码来简单地显示相机源 来自 iSight 时 Python 就会冻结 看起来相机实际上并没有得到清理 我使用了相同代码的多个不同版本 如下 来自
  • Android EditText,在 numberDecimal 输入类型的情况下显示逗号和点作为可能的分隔符

    我需要让用户在输入十进制数时在两个变体之间进行选择 使用逗号 作为分隔符 使用点 作为分隔符 默认情况下 如果我使用inputType numberDecimal in the EditTextxml配置 EditText仅显示数字和逗号
  • R - 更改 corrplot 轴标签的大小

    我正在使用以下内容corrplot require corrplot needs the corrplot package corrplot cor lpp axis1 lpp axis2 method c number bg grey10
  • 如何将我的函数放入类中。Beginner

    我下面有一个 Json 函数 需要构造一个具有两个函数的类 我的第二个函数如何 知道 data这是第一个函数的响应 def results json request request get json data json loads json
  • Oracle SQL 循环遍历日期范围

    我正在尝试编写一个执行以下操作的查询 从 Visit 表中获取 Start Date 和 End Date 对于日期范围内包含的每个日期 搜索遭遇表 查看特定提供者在该日期是否看过患者 生成一个表格 显示每个日期以及谁在该日期见过该患者 日
  • 为什么我的 JFrame 没有显示?

    我很确定我以前已经这样做过 但由于某种原因 当我运行它时 JFrame 不会显示 JLabel originalString new JLabel Original String str getMutator JLabel currentS
  • 如何在 flutter/dart 中从购物车中删除商品

    当您有单独的列表小部件时 如何从 flutter 中的列表中删除购物车项目 我有三个包含以下代码的文件 carts dart gt 我在其中显示所有列表项 cart list item gt 我在其中创建了一个小部件 api service
  • 如何模拟任何未直接调用的函数?

    TL DR 我如何修补或模拟 任何未被直接调用 使用的函数 设想 我有一个简单的单元测试片段 utils functions py def get user agents sends requests to a private networ
  • 为什么我应该使用“->”而不是“.”在对象的指针中? [复制]

    这个问题在这里已经有答案了 我同意这可能是一个非常初学者的问题 但我不知道为什么我不能使用 访问对象指针的成员 e g JMP sum obj new JMP 0 JMP a sum obj gt number a number sum o
  • 从句子级别的旋转文本中取消旋转 PHP 中的文本

    我需要在 php 页面中整齐地输出旋转文本 我已经有了 hi hello greetings 格式的预旋转文本 我有一个在其他地方找到的 php 代码 但它不会在句子级别输出旋转文本 其中有两个 这是需要修复的代码
  • 如何在magento中提交表单后获取发布数据变量

    如何获取后变量的数据 就像如果我使用 post 方法发布表单 那么我可以使用 REQUEST 或 POST 获取它 我怎样才能在 mgento 中做到这一点 您可以使用以下命令读取值 this gt getRequest gt getPar
  • 在 Django 应用程序内对弹性搜索进行单元测试

    我有一个使用弹性搜索的 Django 应用程序 我想要 100 的代码测试覆盖率 因此我需要测试对 elasticsearch 在本地 安装 的 API 调用 所以我的问题是 模拟整个elasticsearch 更好还是我应该运行elast
  • cin.getline() 正在跳过 C++ 中的输入[重复]

    这个问题在这里已经有答案了 如果我使用以下代码 getline 不会采用最后一个输入 对于 for 循环的最后一次迭代 它只是跳过它 int main int n map