将 char[] 添加到 vector
Adding char[] to vector
正在尝试为 vector
增加价值:
std::vector<char[256] > readers;
char d[256];
strcpy(d, "AAA");
readers.push_back(d);
出现错误:
an array cannot be initialized with a parenthesized initializer
我做错了什么?
C-style数组不可赋值,所以不能作为向量的值类型。
如果您至少使用 C++11,则可以 #include <array>
并使用 std::array
。 (以前在 Visual C++ 2008 SP1 中可用 std::tr1::array
)。
#include <iostream>
#include <array>
#include <vector>
#include <cstring>
int main()
{
std::vector< std::array<char, 256>> readers;
std::array<char,256> d;
strcpy(d.data(), "AAA");
readers.push_back(d);
}
您可以使用 std::array
而不是过时的 原始数组 。
像这样:
#include <iostream>
#include <array>
#include <vector>
#include <cstring>
int main( )
{
std::vector< std::array<char, 256> > readers;
std::array<char, 256> d { "AAA" };
// strcpy( d.data( ), "AAA" ); not required
readers.push_back( d );
std::cout << readers[0].data( ) << '\n';
}
正在尝试为 vector
增加价值:
std::vector<char[256] > readers;
char d[256];
strcpy(d, "AAA");
readers.push_back(d);
出现错误:
an array cannot be initialized with a parenthesized initializer
我做错了什么?
C-style数组不可赋值,所以不能作为向量的值类型。
如果您至少使用 C++11,则可以 #include <array>
并使用 std::array
。 (以前在 Visual C++ 2008 SP1 中可用 std::tr1::array
)。
#include <iostream>
#include <array>
#include <vector>
#include <cstring>
int main()
{
std::vector< std::array<char, 256>> readers;
std::array<char,256> d;
strcpy(d.data(), "AAA");
readers.push_back(d);
}
您可以使用 std::array
而不是过时的 原始数组 。
像这样:
#include <iostream>
#include <array>
#include <vector>
#include <cstring>
int main( )
{
std::vector< std::array<char, 256> > readers;
std::array<char, 256> d { "AAA" };
// strcpy( d.data( ), "AAA" ); not required
readers.push_back( d );
std::cout << readers[0].data( ) << '\n';
}