2012-10-19 176 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()'也有點暗示了這個意圖。 –

相關問題