Strings
От: worm www.zarech.ru
Дата: 14.08.01 07:39
Оценка:
Привет!!!

Как мне преобразовать объявленный в Н-нике #define "String" к константной юникодной строке. При этом проект компилится ни как юникодный и не ипользуя различные функции преобразования строк.

Например в Н написано
#define "String"
мне нужно чтобы откомпилилось как
const wchar_t = L"String";

Это вообще возможно??
Re: Strings
От: Igor Soukhov  
Дата: 14.08.01 15:39
Оценка:
Здравствуйте worm, вы писали:

W>Привет!!!


W>Как мне преобразовать объявленный в Н-нике #define "String" к константной юникодной строке. При этом проект компилится ни как юникодный и не ипользуя различные функции преобразования строк.


W>Например в Н написано

W>#define "String"
W>мне нужно чтобы откомпилилось как
W>const wchar_t = L"String";

а где сама константа ? ...

W>Это вообще возможно??

"преобразовать" ... "не ипользуя различные функции преобразования строк" ... ы ... видимо нет ...

Igor
* thriving in a production environment *
Re[2]: Strings
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.08.01 18:11
Оценка:
Здравствуйте Igor Soukhov, вы писали:

IS>"преобразовать" ... "не ипользуя различные функции преобразования строк" ... ы ... видимо нет ...


Это же с чего же нет? А, чем это плохо:

#define str "String"
const wchar_t gc_wstr = Lstr;

???
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Strings
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.08.01 18:26
Оценка:
Здравствуйте VladD2, вы писали:

VD>Это же с чего же нет? А, чем это плохо:


VD>#define str "String"

VD>const wchar_t gc_wstr = Lstr;

Пордон пока посылал сам понял чем. :)

Тогда действительно (похоже) ни как.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Strings
От: worm www.zarech.ru
Дата: 15.08.01 09:08
Оценка:
Здравствуйте VladD2, вы писали:

VD>Здравствуйте VladD2, вы писали:


VD>>Это же с чего же нет? А, чем это плохо:


VD>>#define str "String"

VD>>const wchar_t gc_wstr = Lstr;

VD>Пордон пока посылал сам понял чем. :)


VD>Тогда действительно (похоже) ни как.


Если кому-то еще интересно, я нашел как это сделать. Но, с использованием макроса :)

#define ToWHAR(string) L#string;
#define str "String"

const wchar_t gc_wstr[] = ToWHAR(str)

И все ок!
Re[5]: Strings
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.08.01 16:29
Оценка:
Здравствуйте worm, вы писали:


W>Если кому-то еще интересно, я нашел как это сделать. Но, с использованием макроса :)


W>#define ToWHAR(string) W> L#string;

W>#define str "String"

W>const wchar_t gc_wstr[] = ToWHAR(str)


Кажись я это в VC пробывал. И вроде как не прокатывало, но может и ошибся где...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Strings
От: Constantin Burov Украина  
Дата: 16.08.01 13:16
Оценка:
Здравствуйте worm, вы писали:

W>Как мне преобразовать объявленный в Н-нике #define "String" к константной юникодной строке. При этом проект компилится ни как юникодный и не ипользуя различные функции преобразования строк.


W>Например в Н написано

W>#define "String"
W>мне нужно чтобы откомпилилось как
W>const wchar_t = L"String";

W>Это вообще возможно??


Почитал вашу переписку и решил вмешаться... Извини, если ты решил использовать такой макрос, то почему тебе не подходит макрос _TEXT() из h-файла tchar.h???
Вообще по этому поводу можно почитать одну из первых глав в книге Рихтера.
Заранее извиняюсь, если я не так понял твой вопрос ;)
----
With best regards, Kot Burov aka W@ndERR ®
UIN: 108043419
--------
Re[2]: Strings
От: Igor Soukhov  
Дата: 16.08.01 15:46
Оценка:
Здравствуйте Constantin Burov, вы писали:

CB>Здравствуйте worm, вы писали:


W>>Как мне преобразовать объявленный в Н-нике #define "String" к константной юникодной строке. При этом проект компилится ни как юникодный и не ипользуя различные функции преобразования строк.


W>>Например в Н написано

W>>#define "String"
W>>мне нужно чтобы откомпилилось как
W>>const wchar_t = L"String";

W>>Это вообще возможно??


CB>Почитал вашу переписку и решил вмешаться... Извини, если ты решил использовать такой макрос, то почему тебе не подходит макрос _TEXT() из h-файла tchar.h???

"... При этом проект компилится ни как юникодный ..."

CB>Вообще по этому поводу можно почитать одну из первых глав в книге Рихтера.

CB>Заранее извиняюсь, если я не так понял твой вопрос ;)

Igor
* thriving in a production environment *
Re: Strings
От: Андрей Тарасевич Беларусь  
Дата: 16.08.01 16:51
Оценка:
Здравствуйте worm, вы писали:

W>Привет!!!


W>Как мне преобразовать объявленный в Н-нике #define "String" к константной юникодной строке. При этом проект компилится ни как юникодный и не ипользуя различные функции преобразования строк.


W>Например в Н написано

W>#define "String"
W>мне нужно чтобы откомпилилось как
W>const wchar_t = L"String";

W>Это вообще возможно??


#define MAKE_WIDE_(s) L##s
#define MAKE_WIDE(s) MAKE_WIDE_(s)

...
#define STR "string"

...
const wchar_t* str = MAKE_WIDE(STR);

Best regards,
Андрей.
Best regards,
Андрей Тарасевич
Re[6]: Strings
От: Андрей Тарасевич Беларусь  
Дата: 16.08.01 17:20
Оценка:
Здравствуйте VladD2, вы писали:

W>>Если кому-то еще интересно, я нашел как это сделать. Но, с использованием макроса :)


W>>#define ToWHAR(string) W>> L#string;

W>>#define str "String"

W>>const wchar_t gc_wstr[] = ToWHAR(str)


VD>Кажись я это в VC пробывал. И вроде как не прокатывало, но может и ошибся где...


Этот макрос 'ToWHAR' обладает следующими свойствами/ограничениями:

1) Передаваемая в качестве аргумента строка _не_ должна быть заключена в кавычки.
2) Если в качестве аргумента использован макрос, то он расширен _не_ будет.

Например

#define STR "string"

const char wchar_t* str = ToWHAR(STR);

будет заменено на

const char wchar_t* str = L"STR";

а не на

const char wchar_t* str = L"string";

Макрос, соответствующий условиям задачи, должен быть "двухуровневым" и должен использовать ##, а не #. См. мое сообщение от 21:51.

Best regards,
Андрей.
Best regards,
Андрей Тарасевич
Re[7]: Strings
От: Андрей Тарасевич Беларусь  
Дата: 16.08.01 17:46
Оценка:
АТ>const char wchar_t* str = ToWHAR(STR);
АТ>const char wchar_t* str = L"STR";
АТ>const char wchar_t* str = L"string";

Sorry за лишние 'char'ы.
Best regards,
Андрей Тарасевич
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.