Reputation: 1094
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'.
Upvotes: 12
Views: 14868
Reputation: 1094
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
Upvotes: 10
Reputation: 477700
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).
Upvotes: 6