Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > outputdebugstring stringstream


Автор: CompWorm 22.1.2012, 14:08
Доброго времени!

Код

   std::stringstream str;
   str << "hello Ворлд!"  << "\n";
   OutputDebugString((char*)str.str().c_str());


что-то с кодированием я налохматил, подскажите как поправить?
выводятся знаки вопросов. тут что-то с принтом надо сделать кажется, но никак не вспомню что...

Автор: 586 22.1.2012, 16:42
Код
   std::stringstream str;
   str << "hello Ворлд!"  << "\n";
   OutputDebugStringA(str.str().c_str());

Автор: CompWorm 22.1.2012, 18:08
586, гмм... не совсем так как я ожидал, но работает))))) не знал что ещё с А бывает. 
спасибо, +.

Автор: JackYF 22.1.2012, 18:10

M
JackYF
Оффтопик порезал.

Автор: CompWorm 23.1.2012, 08:16
эврика! не тот стрим!
Код

#include <sstream>


        std::ostringstream str;
        str << " хелоу ворлд \n";
        OutputDebugString(str.str().c_str());

Автор: bsa 23.1.2012, 09:51
Цитата(CompWorm @  23.1.2012,  09:16 Найти цитируемый пост)
не тот стрим!

причем тут стрим? stringstream - это поток доступный на чтение и запись. А ostringstream доступен только на запись. В твоем примере они отличий не имеют.

Автор: CompWorm 24.1.2012, 14:55
Цитата(bsa @  23.1.2012,  09:51 Найти цитируемый пост)
причем тут стрим? stringstream - это поток доступный на чтение и запись. А ostringstream доступен только на запись. В твоем примере они отличий не имеют. 

да, согласен... тут я промахнулся.

http://www.softwareverify.com/blog/?p=261 нашёл интереснейшую статью по этому поводу. 
Я правильно понимаю, что при вызове просто OutputDebugString выбор между юникодовой OutputDebugStringW и АНСИ OutputDebugStringA вариантом производится в зависимости от настроек билда? то есть по хорошему в проекте надо как-то выставить ANSI...

Добавлено через 2 минуты и 30 секунд
дело в том что при вызове OutputDebugString под WinXP у меня срабатывает АНСИ вариант, а под Win7 - ЮНИКОДовый... а код пишу один и тот же...

Добавлено через 3 минуты и 53 секунды
и студия одна и та же...

Автор: 586 25.1.2012, 01:13
Кодировку можно настроить в свойствах проекта: Меню -> Project -> Properties -> Configuration Properties -> General -> в списке найди свойство "Character Set" -> укажи "Use multibyte character set".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)