【问题标题】:Control display output using vector使用矢量控制显示输出
【发布时间】:2013-08-12 17:10:15
【问题描述】:

矢量大小:2

矢量数据:Carol Mary

if(vector.size() >=2)
{
    cout<<vector.size();

    for(int i=1;i<vector.size()-2;i++)
    {
        cout<<" AND ";
    }
}

输出显示:Carol AND Mary AND

如何将其更改为 Carol AND Mary?

当我的向量大小为 3 时,

如何将其更改为 Carol AND Mary AND Peter

提前致谢!

【问题讨论】:

  • 卡罗尔、玛丽和彼得从哪里来?它们在向量中吗?
  • @P0W 他们来自向量
  • 我很确定你错过了vector[i] &lt;&lt;。尝试构造 a short, complete running program 并将其代码复制并粘贴到问题中。
  • 不要将你的向量称为vector,这只会导致混乱。

标签: c++ if-statement for-loop vector cout


【解决方案1】:

假设向量被命名为 v。

if(!v.empty()) {
  cout << v[0];
  for(int i = 1; i<v.size(); ++i) {
    cout << " AND " << v[i];
  }
}

【讨论】:

  • 好电话,我相信我现在确定了答案。要求它不为空。谢谢!
【解决方案2】:

我会用我的infix_ostream_iterator

std::copy(vec.begin(), vec.end(), 
         infix_ostream_iterator<std::string>(std::cout, " AND "));

infix_ostream_iterator 代码位于 CodeReview.SE

【讨论】:

    【解决方案3】:

    只是添加我喜欢的方式:

    const char *sep = "";
    for (size_t i=0; i<vec.size(); ++i, sep=" AND ")
        cout << sep << vec[i];
    cout << endl;
    

    或者,甚至更短:

    cout << join(vec, " AND ") << endl;
    

    也就是说,使用 boost::algorithm::join(),就像在 Python (" AND ".join(vec)) 中一样工作。

    【讨论】:

      【解决方案4】:
      std::vector<std::string> vec {"Carol","Marry","Peter"};
      
      int i=1;
      std::cout<<vec[0];
      
      for(;i<vec.size();++i)
        std::cout<<" AND "<<vec[i];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多