如何在方括号内打印整个数组,而不是打印每个值?

How to Print whole array inside square brackets rather then printing every single value?

本文关键字:打印 数组 方括号      更新时间:2023-10-16

在下面的代码中,我想打印整个数组,而不是打印每个值。我们能做到吗?我熟悉我们附加值的 python,但我在C++中找不到它。那么如何获得想要的结果。如果我必须使用 printf 打印它怎么办?

#include <iostream>
using namespace std;

int *name(){
static int n[5];
for(int i=0;i<5;i++){
n[i]=i;}
return n;}
int main(){
int *p;
p=name();
for(int i=0;i<5;i++){
cout<<*(p+i)<<endl;}
return 0;

期望的输出应该是 -

[0,1,2,3,4] 
#include <iostream>
using namespace std;
int *name() {
static int n[5];
for (int i = 0; i < 5; ++i)
n[i] = i;
return n;
}
int main()
{
int *p;
p = name();
cout << '[';
for (int i = 0; i < 5; ++i)
cout << *(p+i) << (i != 4 ? ',' : ']');
}

或者,如果你想将数组打印封装到一个通用函数中:

#include <iostream>
#include <string>
using namespace std;
std::string PrintArray(int* array, size_t size) {
std::string answer = "[";
for (size_t i = 0; i < size; ++i) {
answer += std::to_string(array[i]);
answer += (i < size-1) ? "," : "]";
}
return answer;
}
int* name() {
static int n[5];
for (int i = 0; i < 5; i++) {
n[i] = i;
}
return n;
}
int main() {
int* p;
p = name();
cout << PrintArray(p, 5) << endl;
return 0;
}

我通常会为所需的类型超载operator<<,但您的里程可能会有所不同。

#include <iostream>
#include <vector>
template <class InputIt>
std::ostream& print_impl(std::ostream& os, InputIt first, InputIt last)
{
os << '[';
if (first != last)
{
os << *first;
while ( ++first != last )
os << ", " << *first;
}
return os << ']';
}
template <class T>
std::ostream& operator<<(std::ostream& os, std::vector<T> const& v)
{
return print_impl(os, v.cbegin(), v.cend());
}
template <class T, size_t N>
std::ostream& operator<<(std::ostream& os, T const (&a)[N])
{
return print_impl(os, std::cbegin(a), std::cend(a));
}
int main()
{
std::vector<int> a{1, 2, 3, 4, 5};   
std::cout << a << 'n';
float b[] = {3.14f, -0.1f, 2.0f};
std::cout << b << 'n';
}