GDExtension cpp 中godot::String与char*、std::string的相互转换

文章详细介绍了在GDExtensioncpp中godot::String对象与char*以及std::string之间的转换方法。godot::String可以通过构造函数从constchar*创建,而转换回char*则需借助godot::CharString的get_data()方法。对于std::string,由于没有直接的转换函数,需要先转换为char*进行间接操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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::CharString

    godot::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之间的相互转换相信大家都会,不在赘述。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值