【问题标题】:How to build a Vector of strings (Containing Spaces)?如何构建字符串向量(包含空格)?
【发布时间】:2017-08-27 08:32:58
【问题描述】:

我试图构建一个字符串向量。 一些字符串还包含空格。 这就是我使用 getline(cin,string_name) 的原因。 我的代码看起来像

      for(int i=0;i<n;++i)
        {
            getline(cin, s);
            vec.push_back(s);

        }

当我接受输入时

ADAM BOB JOHNSON

取两个输入词后停止,显示的向量内容为

(HERE SPACE IS DISPLAYED)ADAM BOB

这是什么意思。它是否将 NULL 字符串作为第一个字符串的输入? 如果有人告诉我如何获取字符串并显示它,那将非常有帮助。谢谢。

【问题讨论】:

  • 这是什么语言?和some kind of error ?这是什么错误?
  • 请提供minimal reproducible example,仅此代码 sn-p 无法重现您的问题
  • 对不起,这不是任何错误,但没有给出预期的输出@Yazan
  • 你能告诉我缺少什么吗?我试图正确解释这个问题@UnholySheep
  • 我基本上是在解决这个问题code.google.com/codejam/contest/11274486/dashboard#s=p0.Can任何人告诉我如何在第二种情况下接受输入。

标签: c++ string getline


【解决方案1】:

阿比吉特, 你的信息显然是不够的。假设你的代码是用 C++ 编写的,我做了这个测试 cpp:

#include <iostream>
#include <string>
#include <vector>

int main()
{
    std::vector<std::string> vec;
    std::string s;
    int n = 1;
    for(int i = 0; i < n; ++i)
    {
        getline(std::cin, s);
        vec.push_back(s);

        std::cout << vec.at(i) << std::endl;
    }

    return 0;
}

使用 g++ 编译并在输入时输入“ADAM BOB JOHNSON”字符串。一切都按计划进行,输出与输入完全相同。所以我在这里看不到任何错误。

抱歉,目前信誉不足,无法发表评论。


UPD:发现问题。 getline 首先得到 '\n',我们在 '3' 之后离开(std::cin >> n; 需要它)因此,您只需要忽略一个字符串。代码:

#include <iostream>
#include <vector>
#include <string>

int main()
{
    int n;
    std::cin >> n;


    std::vector<std::string> vec;
    std::string s;
    std::getline(std::cin, s);

    for(int i = 0; i < n; ++i)
    {
        std::getline(std::cin, s);
        vec.push_back(s);

        // std::cout << vec.at(i) << std::endl;
    }
    for(int i=0;i<n;++i){

        std::cout << vec[i] <<" " << std::endl;
    }




    return 0;

}

对我来说很好。

是的,@pmaxim98 先发了,抱歉,正在编辑回复,没有看到您的评论。

【讨论】:

  • 是的,它在循环内正确打印,但是在推动搅拌后再次迭代 vecor 时,它不会显示第三次搅拌并在第一个位置显示空间。
  • 有谁能帮帮我吗?
  • @Abhijit Sarkar 在cin &gt;&gt; n 之后尝试使用std::cin.ignore()。见here
  • 非常感谢。这就是我要找的东西。@pmaxim98
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
相关资源
最近更新 更多