Как вызвать исключение в VIsual C ++, используя строку wchar_t? - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть устаревший код, который я постепенно портирую на символы Юникода в Visual C ++ (wchar_t). Я столкнулся с этим фрагментом кода, который я хотел бы преобразовать:

char tmp[256];
sprintf(tmp, "stuff");
throw exception(tmp);

Я хочу изменить это на что-то вроде этого (это дает мне ошибку компиляции при исключении):

wchar_t tmp[256];
swprintf(tmp, "stuff");
throw exception(tmp);

Пока что я не нашел ни одного документа, дающего мне Unicode-эквивалент для исключения броска, кто-нибудь может мне помочь?

Конечно, я мог бы преобразовать свою "tmp" обратно в строку символов, но это просто глупо делать это.

1 Ответ

1 голос
/ 09 декабря 2011

std::exception не поддерживает wchar_t строки, поэтому вам придется либо преобразовать ваш буфер wchar_t в отдельный буфер char, либо не переключаться на буфер wchar_t, чтобы начать с sprintf() поддерживает форматирование ввода Unicode с помощью спецификаторов форматирования %S и %ls, например:

char tmp[256]; 
sprintf(tmp, "%ls", wchar_t data here); 
throw exception(tmp); 
...