我需要一个简单的类来包装一个 c 风格的指针字符串数组,即 char **
我需要对包装器进行最少的操作,包括添加元素( const 或非 const )、迭代、随机访问和查询大小。我开始使用如下所示的 std::vector 但我不喜欢它,原因如下所述
这是我的开始
struct CstrVector
{
CstrVector(){}
char *convertToC(const std::string & str)
{
char *c = new char[str.size()+1];
std::strcpy(c, str.c_str());
return c;
}
void add( const char* c)
{
//??
}
void add(const std::string& str )
{
data.push_back(convertToC(str));
}
void add(const std::string& s, unsigned int pos )
{
if( pos < data.size())
{
data[pos] = convertToC(s);
}
}
~CstrVector()
{
for ( size_t i = 0 ; i < data.size() ; i++ )
{
delete [] data[i];
}
}
char ** vdata;
std::vector<char*> data; // I want to replace this with char ** vdata
};
为什么不使用
std::vector<char*>
我看不到它有什么好处,因为无论如何我仍然必须在容器 ( std::vector ) 之外分配和释放内存
为什么不使用
std::vector<std:string>
因为我希望能够轻松地将数组传递给将操纵/更改其内容的 C 函数。
最佳答案
关于c++ - 在 C++ 中为字符串指针的动态数组寻找一个简单的包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7178417/