системный журнал const char * to string - PullRequest
0 голосов
/ 14 ноября 2010
   catch (exception e) { syslog (LOG_ERR, "exception: " + e.what());    }

Вот что я пытаюсь сделать, и это не работает, я пытался использовать это

string ctos(const char& c){

    stringstream s;
    s << c;

    return s.str();
}

Но все еще потеряно

Любая помощь будет оценена. Спасибо.

Ответы [ 3 ]

3 голосов
/ 14 ноября 2010

Попробуйте это

catch (exception e) 
{ 
         syslog (LOG_ERR, "exception: %s" ,e.what());   
}
3 голосов
/ 14 ноября 2010

Используйте конструктор std::string, взяв const char*, см. ссылка .Таким образом, ваш код регистрации может быть исправлен следующим образом:

catch (const exception& e) {
    syslog (LOG_ERR, (std::string("exception: ") + e.what()).c_str());
}
2 голосов
/ 14 ноября 2010

Если вы используете syslog(3), то это определяется как:

void syslog(int priority, const char *message, ...);

Либо вы хотите использовать printf -подобную функциональность syslog:

catch (const std::exception& e) 
{ 
    syslog(LOG_ERR, "exception: %s", e.what());
}

Или вы можете преобразовать std::string в const char*, используя функцию-член std::string::c_str:

catch (const std::exception& e)
{
    std::string message = std::string("exception: ") + e.what();
    syslog(LOG_ERR, message.c_str());
}

Еще одно примечание, перехватывать по константной ссылке, иначе это хорошийвероятность того, что фактический брошенный объект исключения получит нарезанный .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...