Форум программистов, компьютерный форум CyberForum.ru

Wchar_t - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
21.04.2014, 21:51     Wchar_t #1
подключаюсь к серверу. Присваиваю переменной типа string имя,
C++
1
const char* charName = _Name.c_str();
затем в цикле передаю серверу имя клиента, в цикле делаю следующее:
C++
1
2
3
 
Client.send_data(charName[i]);
cout<<*charName[i];
выводит :
98Data send
32767Data send
-268434792Data send
32767Data send
-1Data send
0Data send
а в имени записано : breathe
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2014, 21:51     Wchar_t
Посмотрите здесь:

Тип wchar_t C++
C++ Конвертация в wchar_t
wchar_t C++
Cannot convert from 'wchar_t' to 'const wchar_t *' C++
C++ Wchar_t to char
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6423 / 3797 / 878
Регистрация: 30.01.2014
Сообщений: 6,585
22.04.2014, 20:19     Wchar_t #41
Цитата Сообщение от nmcf Посмотреть сообщение
А с int что? Его размер в байтах также непредсказуем?
Предсказуем, мы же знаем на какой платформе работаем. Просто в сетевой пакет его пихать нельзя, по тем же причинам. Есть же известное неравенство:
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4265 / 3696 / 1243
Регистрация: 14.04.2014
Сообщений: 14,476
22.04.2014, 20:27     Wchar_t #42
Я имею в виду, что int'ы unix и windows разные?
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
22.04.2014, 20:32  [ТС]     Wchar_t #43
мне сказали или отсекать лишние 2 байта от 4-х wchar_t или использовать юникод. как мне использовать юникод симолы?
DrOffset
6423 / 3797 / 878
Регистрация: 30.01.2014
Сообщений: 6,585
22.04.2014, 20:37     Wchar_t #44
Цитата Сообщение от nmcf Посмотреть сообщение
Я имею в виду, что int'ы unix и windows разные?
int обычно зависит от разрядности аппаратуры или ос. На 32-разрядной системе в linux и windows, если не оговорено иное (скажем через опции копилятора), sizeof(int) == 4. Причем на 64-битных системах, int тоже обычно 4, но уже из-за соображений совместимости. Слишком много кода было написано за период существования 32-разрядных машин и далеко не весь он был раcчитан на повышение разрядности int. А вот на 16-битной ОС int вполне законно будет 2 байта. Так будет, например, в DOS

Добавлено через 30 секунд
diplomat1129, посмотри там выше мой ответ с примером на С++11.
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
22.04.2014, 20:42  [ТС]     Wchar_t #45
а как у char16_t длину узнать?
я опишу более детальную картину. Сначала на сервер надо передать длину имени клиента. Затем это имя посимвольно(по 2 байта) передавать на сервер
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 20:49     Wchar_t
Еще ссылки по теме:

Error: cannot bind 'std::basic_ostream<wchar_t>' lvalue to 'std::basic_ostream<wchar_t>&&'| C++
Чтение wchar_t C++
C++ String в wchar_t*

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
DrOffset
6423 / 3797 / 878
Регистрация: 30.01.2014
Сообщений: 6,585
22.04.2014, 20:49     Wchar_t #46
Цитата Сообщение от diplomat1129 Посмотреть сообщение
а как у char16_t длину узнать?
В смысле длину строки в символах?
Цитата Сообщение от diplomat1129 Посмотреть сообщение
Сначала на сервер надо передать длину имени клиента.
Вот длина в символах:
C++
1
2
3
    const char16_t buf[] = u"12345678";
 
    std::char_traits<char16_t>::length(buf);
Yandex
Объявления
22.04.2014, 20:49     Wchar_t
Ответ Создать тему
Опции темы

Текущее время: 02:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru