我正在使用 stl 中的字符串类,std::string
现在我想用eastl替换所有内容。所以简单的问题:
eastl::string obj = std::string("test");
错误:请求从“the::string {aka std::basic_string}”转换为非标量类型“eastl::string {aka eastl::basic_string}”
是否可以在这些类型之间自动转换?
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());
不,如果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");
这些类不兼容。eastl::string 没有带有 std::string 参数的构造函数。所以你应该使用这样的东西: srd::string stlstr = "test"; 东l::字符串东lstr=strlstr.c_str();