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

标签 c++ arrays vector char

我正在处理一些遗留代码,我需要一个 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/

相关文章:

r - 矢量化我的想法 : Vector Operations in R

java - 如何从数组中获取 5 个数字的序列

c++ - 为什么表达式的结果取决于表达式的放置位置?

c++ - 通读文件中的字符并计算有多少个字母 [c++]

c++ - 基于范围的 for 循环忽略元素

java - java中的数组,带有随机数

python - 如何使用 numpy 对循环数组进行切片

java - JAVA实例化具有多个元素的数组

c++ - 为具有 1 和 2 字节字符的字符集实现退格

c++ - 递归地向 vector 添加项目