10
votes

I get the following error when this code is run:

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

cannot convert ‘const string {aka const std::basic_string}’ to ‘const char*’ for >argument ‘2’ to ‘void syslog(int, const char*, ...)’ inServer.cpp /PeCounter
line 478 C/C++ Problem

I am daemonizing the program and the errorString value prints just fine when outputted to stdio using cout, but it will not print when using a syslog call.

Any way to get std::basic_string(char) into the form of 'const char'.

2
Submitting your own answer is perfectly acceptable here. You don't need to include it in your question, even with a later edit.Code-Apprentice

2 Answers

8
votes

I found that std::basic_string has an item access method c_str() which seems to fix the compiling issue.

Here is a site with more information: http://en.cppreference.com/w/cpp/string/basic_string

5
votes

The c_str() or data() member function provides a pointer to the first element of an array of char_type which contains your string. It's valid as long as the string object itself remains valid and unchanged (but beware that operations that may cause reallocations may invalidate the pointer -- best not to store it).