- 1
- 2
- 3
QString dump_str = "dump";
log4cplus::tstring tdump = (std::wstring((wchar_t*)dump_str.unicode(), dump_str.length()));
XLogger::dumper = log4cplus::Logger::getInstance(std::wstring(tdump));
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1000
QString dump_str = "dump";
log4cplus::tstring tdump = (std::wstring((wchar_t*)dump_str.unicode(), dump_str.length()));
XLogger::dumper = log4cplus::Logger::getInstance(std::wstring(tdump));
Мой "шедевр"
Три преобразования подряд
Если кто подскажет как это по человечески приписать буду благодарен.
Steve_Brown 02.02.2012 12:01 # +2
?
ir4y 02.02.2012 14:44 # 0
Спасибо.
TarasB 02.02.2012 12:04 # +3
Иногда невстроенность строк сильно вредит.
defecate-plusplus 02.02.2012 12:08 # +4
mylogger.error() << "Hello" << L"World" << std::endl;
крестопроблемы не в туалетах, а в головах
SmackMyBitchUp 02.02.2012 12:34 # 0
defecate-plusplus 02.02.2012 13:13 # +2
по теме - не понимаю, в чем проблема сделать
XLogger::dumper = log4cplus::Logger::getInstance(dump_str. toStdWString());
хоть я и не знаю, что означают эти все конструкции - в первый раз вижу
TarasB 02.02.2012 14:14 # 0
defecate-plusplus 02.02.2012 14:31 # 0
т.е. ты можешь спокойно писать
и всё выведется как положено
в std::cout конечно wchar_t const * выводить не следует - оно об нем само по себе ничего не знает, но если очень хочется, то можно объявить перегрузку вывода std::wstring в чаровый ostream, и в этой перегрузке уже выводить собственным образом - например, тривиальным
исходя из вышеизложенного, не вижу абсолютно никаких проблем для того, чтобы ихний логгер работал как говносраный поток, придуманный 15 лет назад, и был способен без лишнего геморроя для программиста воспринимать как однобайтовые строки, так и многобайтовые - это уже задача потока либо однобайтовые расширять до юникода, либо наоборот
я сам реализовывал такой логгер, ничего сложного в нем нет
ir4y 02.02.2012 15:00 # 0
log4cplus::Logger::getInstance возвращает экземпляр логера а не пишет лог.
Непосредственно запись осуществляется уже через стандартный интерфейс потоков.
И там все работает нормально. Проблема только в методе getInstance.
rat4 02.02.2012 14:12 # 0
ir4y 02.02.2012 14:18 # 0
Приходится использовать сторонние библиотеки
Lure Of Chaos 02.02.2012 23:09 # 0
guest 03.02.2012 02:21 # +1
ir4y 03.02.2012 16:11 # 0
guest8 09.04.2019 12:37 # −999