我不确定它是否可能,因为我没有找到任何东西,但我有一个名为" Grades"而且我试图将它们全部输出一行。
int Grades[5] = { 3, 2, 5, 2 };
cout << "Grades:" << Grades << "\n";
我知道上面的内容并不奏效,但我想要的是:
等级:3,2,5,2
(当然减去格式/逗号)
我知道你可以循环使用它,但它最终会将它打印在我不想要的新行上。
答案 0 :(得分:4)
您可以使用std::ostream_iterator和std::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;
}