【问题标题】:const char* difference in custom String class自定义 String 类中的 const char* 差异
【发布时间】:2015-06-29 03:01:36
【问题描述】:

我有一个通用类型 String,它具有我的证书 cert.pem 的值 我将它传递给一个函数并转换为const char*,但它不起作用。我的代码低于该代码不起作用

String sCertificate = "cert.pem";
if ( SSL_CTX_use_certificate_file(ctx,(const char*)&sCertificate, SSL_FILETYPE_PEM) <= 0 )
        {
                mPtrLogger->logMsg(CF, "", "Unable to Load Certificate file", INFO);
                abort();
        }

这段代码有效

if ( SSL_CTX_use_certificate_file(ctx,"cert.pem", SSL_FILETYPE_PEM) <= 0 )
        {
                mPtrLogger->logMsg(CF, "", "Unable to Load Certificate file", INFO);
                abort();
        }

我似乎无法理解问题所在。

【问题讨论】:

  • 这个类型的声明在哪里?您没有使用标准库为我们提供的string
  • 不,我已经覆盖了字符串并创建了一个泛型类型。
  • 然后显示你为String创建的类!
  • '(const char*)&sCertificate,' 是完全错误的 - 使类/结构成为指向 c 字符串的指针
  • @DieterLücking 那么?

标签: c++ pointers char constants stdstring


【解决方案1】:

除非String 类型具有重载的转换运算符,否则不能通过强制转换进行转换。 (想想这就像将您的一个复杂类转换为char *。)

查看String 的方法并选择一个返回char * 的方法。 std::stringc_strdata 方法。

【讨论】:

  • 不,它没有 const char* 的重载,我也不能写它:(有什么建议吗?
  • String 是否有返回const char *char * 的方法?如果没有,你为什么用它而不是std::string
  • 因为我的应用程序都在使用它
  • 您的String 来自哪个库,所以我可以查找信息并看到它包含返回const char * 的方法?
  • const char * String::c_str() { return s.c_str();}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
  • 2014-08-24
  • 2010-10-22
相关资源
最近更新 更多