C ++中一行上的数组

时间:2016-10-26 05:31:22

标签: c++ arrays

我不确定它是否可能,因为我没有找到任何东西,但我有一个名为" Grades"而且我试图将它们全部输出一行。

int Grades[5] = { 3, 2, 5, 2 };
cout << "Grades:" << Grades << "\n";

我知道上面的内容并不奏效,但我想要的是:

  

等级:3,2,5,2

(当然减去格式/逗号)

我知道你可以循环使用它,但它最终会将它打印在我不想要的新行上。

4 个答案:

答案 0 :(得分:4)

您可以使用std::ostream_iteratorstd::copy在一行中宣传容器。这样的事情将完成你需要的任务:

#include <iostream>     // std::cout
#include <iterator>     // std::ostream_iterator
#include <vector>       // std::vector
#include <algorithm>    // std::copy

int main () {
  int Grades[5] = { 3, 2, 5, 2 };

  std::copy ( Grades, Grades + 4, std::ostream_iterator<int>(std::cout, ", ") );
  return 0;
}

这是std :: ostream_iterator的文档中的一个例子,它适应了特定的例子。另请参阅ideone上的结果。

(由Rerito提供)如果您使用的是c ++ 11或更高版本,您还可以使用<iterator>中的std :: begin和std :: end来使代码更清晰:< / p>

#include <iostream>     // std::cout
#include <iterator>     // std::ostream_iterator
#include <vector>       // std::vector
#include <algorithm>    // std::copy
#include <iterator>

int main () {
  int Grades[5] = { 3, 2, 5, 2 };

  std::copy (std::begin(Grades), std::end(Grades), std::ostream_iterator<int>(std::cout, ", ") );
  return 0;
}

结果在ideone

答案 1 :(得分:2)

int Grades[5] = { 3, 2, 5, 2 };

cout << "Grades: ";
for (int i = 0; i < sizeof(Grades)/sizeof(int); i++) {
    cout << Grades[i] << ", "; //minus the commas, remove (<< ", ") or to space out the grades, just remove the comma
}

或者

根据juanchopanza的建议,您可以这样做;

int Grades[] = { 3, 2, 5, 2 };

cout << "Grades: ";

for (auto g : Grades) {
    cout << g << ", "; //minus the commas, remove (<< ", ") or to space out the grades, just remove the comma

}

答案 2 :(得分:0)

如果您有最新的编译器支持C++11/C++14,那么您可以使用基于范围的for循环

#include <iostream>

using namespace std;

int main()
{
  int Grades[5] = { 3, 2, 5, 2, 1 };

  bool bFirst = true;

  for (int & i : Grades)
  {
      std::cout << (bFirst ? "Grades: " : ", ") << i;
      bFirst = false;
  }

  return 0;
}

它显示输出,

  

等级:3,2,5,2,1

答案 3 :(得分:0)

您可以为operator<<定义一个带有指向数组的指针的重载:

#include <iostream>

template <typename T, int i>
std::ostream& operator<<(std::ostream& os, T (*arr)[i] )
{
    for (auto e: *arr)
        os << e << ",";
   os << std::endl;
    return os;
}
int main()
{
    int Grades[5] = {2,34,4,5,6};
    std::cout<<& Grades;
}