在GDExtension cpp中godot::String与char*、std::string的相互转换
-
char* 转换为 godot::String
godot::String的构造函数String(); String(const String &from); String(const StringName &from); String(const NodePath &from); String(String &&other); String(const char *from); String(const wchar_t *from); String(const char16_t *from); String(const char32_t *from);
char* str1 = "hello"; String str2 = String((const char*)str1);
-
godot::String 转换为 char*
godot::String 貌似不能直接转换为 char*(?),这里借助了godot::CharStringgodot::String 转为 godot::CharString
namespace godot { class String { ... CharString utf8() const; CharString ascii() const; Char16String utf16() const; Char32String utf32() const; CharWideString wide_string() const; ... } }
在godot::CharString/Char16String…类中有get_data()方法,返回各自对应的const char*
class CharString { friend class String; ... public: ... const char *get_data() const; ... }; class Char16String{const char16_t *get_data() const;} class Char32String{const char32_t *get_data() const;} class CharWString{const wchar_t *get_data() const;}
具体的转换过程
char* testChar = "world"; String aaa = String((const char*)testChar); CharString charStr = aaa.utf8(); const char* bbb = charStr.get_data();
std::string 与 godot::String之间好像不能直接转换(?源码中没看见相关方法)需要先转为 char*。
char* 与 std::string之间的相互转换相信大家都会,不在赘述。