1

我正在使用 stl 中的字符串类,std::string现在我想用eastl替换所有内容。所以简单的问题:

eastl::string obj = std::string("test");

错误:请求从“the::string {aka std::basic_string}”转换为非标量类型“eastl::string {aka eastl::basic_string}”

是否可以在这些类型之间自动转换?

4

3 回答 3

2
eastl::string obj1 = "test";             // works out of the box
eastl::string obj2 = std_string.c_str(); // equivalent to above
eastl::string obj3(&std_string[0],       // another option
                   &std_string[0]+std_string.size());
于 2013-09-03T19:27:57.393 回答
1

不,如果eastl::string没有为std::string.

从 astd::string到 an的最简单方法eastl::string是使用该.c_str()方法获取指向std::string的内部 char 数组的指针

std::string ss("hello");
eastl::string es = ss.c_str(); 

如果要修改库,可以添加自己的。虽然这可能是个坏主意

简单的例子:

class MyString {
    private:
        char *str;
    public:
        MyString(const std::string &s) {
            str = new char[s.length() + 1]; /* allocate */
            strcpy(this->str, s.c_str());   /* copy */
        }
        ~MyString() {
            delete [] str;
        }
};

然后你可以创建一个新的 MyString :

MyString ms = std::string("hello");
于 2013-09-03T19:16:58.060 回答
0

这些类不兼容。eastl::string 没有带有 std::string 参数的构造函数。所以你应该使用这样的东西: srd::string stlstr = "test"; 东l::字符串东lstr=strlstr.c_str();

于 2013-09-03T19:16:27.193 回答