gpt4 book ai didi

c++ - char (*)[] 转换的 vector

转载 作者:太空狗 更新时间:2023-10-29 21:45:11 25 4
gpt4 key购买 nike

我正在处理一些遗留代码,我需要一个 StoreStrings 类来存储一些字符串并能够返回 MyString*。

我试过这个:

typedef char MyString[64]; 

class StoreStrings{
public:
void store(MyString *aStr)
{
theVec.push_back(aStr);
}
const MyString* get(){return theVec.begin();}
private:
std::vector<MyString> theVec;
};

但我很失望,因为它不能用这种语法编译。

StoreStrings myStore;

myStore.store("Hello");//cannot convert parameter 1 from 'char [6]' to 'char (*)[64]'

我之前必须实例化一个 MyString。

MyString myStr = "Hello";
myStore.store(&myStr);

我如何重写 StoreStrings 类以便拥有 myStore.store("Hello");编译?

最佳答案

数组不能在 STL 容器中使用,因为它要求类型是可复制构造和可赋值的

您可以尝试以下方法,但是 std::string 方法是最好的。

typedef char MyString[64];

struct X{
MyString s;
};

class StoreStrings{
public:
void store(MyString aStr)
{
X temp ;
for(int i=0;aStr[i];++i)
temp.s[i] =*(aStr+i);
theVec.push_back(temp);
}
// Here iterator is returned.
const std::vector<X>::iterator get(){return theVec.begin();}
private:
std::vector<X> theVec;
};

int main(){
StoreStrings myStore;
MyString m ="Hello";
myStore.store(m);
}

关于c++ - char (*)[] 转换的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18188711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com