2012-10-19 129 views
6

我得到,当这个代码运行时,下面的错误:如何将std :: basic_string类型转换为char类型的数组?

syslog(LOG_ERR | LOG_USER, "%s",errorString); 

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

我daemonizing程序并为errorString值打印就好输出使用到标准输入输出时cout,但在使用系统日志调用时不会打印。

任何获得std :: basic_string(char)为'const char'形式的方法。

+1

提交您自己的答案在这里完全可以接受。你不需要将它包含在你的问题中,即使有了以后的编辑。 –

回答

4

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

+2

只有'c_str()'保证字符串结尾的终止符。 'data()'可能指向一个未终止的字符串副本,这对于大多数期望有一个'const char *'的API来说是危险的。 –

+3

@AdrianMcCarthy:取决于您使用的C++版本。在C++ 11中,'data()'也是nul终止的(并且保证即使对于空字符串也是有效的)。因此,在C++ 11中,'c_str()'和'data()'之间的唯一区别就是const_ness。 –

+0

@Matthieu M .:你是对的 - 我在看以前版本的规格。尽管如此,还有很多人使用旧图书馆,所以区别可能很重要。 'c_str()'也有点暗示了这个意图。 –

相关问题