如何将std :: basic_string类型转换为char类型的数组?

ben*_*san 9 c++ string type-conversion

运行此代码时出现以下错误:

syslog(LOG_ERR | LOG_USER, "%s",errorString);
Run Code Online (Sandbox Code Playgroud)

不能转换'常量字符串{又名常量性病:: basic_string的}'为>参数'为const char*' '2'至'空隙的syslog(INT,常量字符*,...)' inServer.cpp/PeCounter
线478Ç/C++问题

我正在守护程序,并且当使用cout输出到stdio时,errorString值打印得很好,但是在使用syslog调用时它不会打印.

任何方式将std :: basic_string(char)变为'const char'的形式.

ben*_*san 8

我发现std::basic_string有一个项目访问方法c_str()似乎解决了编译问题.

这是一个包含更多信息的站点:http://en.cppreference.com/w/cpp/string/basic_string


Ker*_* SB 5

c_str()data()成员函数提供一个指针的阵列的第一个元素char_type,其包含您的字符串。只要字符串对象本身保持有效和不变,它就是有效的(但要注意可能导致重新分配的操作可能会使指针无效——最好不要存储它)。

  • @AdrianMcCarthy:取决于您使用的 C++ 版本。在 C++11 中,`data()` 也是以 nul 结尾的(并且保证即使在空字符串上也是有效的)。因此,在 C++11 中,`c_str()` 和 `data()` 之间的唯一区别实际上是常量性。 (3认同)
  • 只有 `c_str()` 保证字符串末尾有一个终止符。`data()` 可能指向字符串的未终止副本,这对于大多数需要 `const char *` 的 API 来说是危险的。 (2认同)