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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
#1

Wchar_t - C++

21.04.2014, 21:51. Просмотров 1273. Ответов 45
Метки нет (Все метки)

подключаюсь к серверу. Присваиваю переменной типа 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
Посмотрите здесь:

CP886 в Multibyte (wchar_t) и BYTE в Multibyte (wchar_t) - C++
Помогите разобраться с кодировками. Получаю из базы данных значения и при выводи их в EditControl все отлично, но если выводить данные в...

wchar_t - C++
что ето за тип данних: wchar_t скок у нему байт??

Непонятки с wchar_t - C++
Прошу помощи: что-то не так с wchar_t. Не копирует имена файлов. Содержание program_config.txt config.cfg C:\\Projects\\abx.txt...

String to wchar_t - C++
День всем добрый. Уже пролазил весь интернет, и ничего не понял. Вся надежда на вас. У меня есть программа. И она не дружит с...

Конвертация в wchar_t - C++
Прочитал что если перед строковым литералом написать L то он будет приведён к типу wchar_t, но почему-то на выходе у меня получается адрес,...

wchar_t to LPCWSTR - C++
Ругается, что text является неинициализированной локальной переменной #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;Windows.h&gt;...

String в wchar_t* - C++
Всем доброго времени суток! Вопрос уже изъезжен давно, но я уже 2 недели &quot;курю&quot; этот форум, но так и не смог выполнить довольно простую...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
21.04.2014, 22:32     Wchar_t #2
diplomat1129, как это у вас компилируется?
C++
1
cout<<*charName[i];
Помимо этого, указатель на си-строку, возвращаемый c_str() валиден только до изменения или уничтожения строки std::string.
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
21.04.2014, 22:34  [ТС]     Wchar_t #3
Строка не меняется в ходе вывода букв, и без указателя выводится тоже самое
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
21.04.2014, 22:40     Wchar_t #4
diplomat1129, почему бы не использовать сразу элементы строки?
_Name[i];
И кстати, имена, начинающиеся с подчеркивания (и с последующей заглавной буквой) зарезервированы для служебного использования.
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
21.04.2014, 22:42  [ТС]     Wchar_t #5
МНе на сервер нужнр передавать 2-х байтные значения. Поэтому и выбрал wchar_t. Т.е. каждую букву нужно привести к 2-х байтному виду
nmcf
5268 / 4588 / 1538
Регистрация: 14.04.2014
Сообщений: 18,226
21.04.2014, 23:01     Wchar_t #6
Где у тебя wchar_t? В примере нет.
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
21.04.2014, 23:04  [ТС]     Wchar_t #7
C++
1
2
3
4
5
byte tmp = (byte)charName[i];
                    vector<byte> buf;
                    buf.push_back(tmp);
                    Client.send_data(buf[i]);
                    cout<<buf[i];
Этот код выводит тоже самое
Byte - wchar_t
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.04.2014, 05:23     Wchar_t #8
Что нужно непонятно.
Цитата Сообщение от diplomat1129 Посмотреть сообщение
C++
1
cout<<buf[i];
Для широких символов используется wcout.
C++
1
2
3
wstring Name;
const byte* charName;
// и т.д.
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
22.04.2014, 09:14  [ТС]     Wchar_t #9
Нужно передавать с клиента wchar переменные. Потому что сервер писал не я и мне сказали пересылать 2-х байтные значения букв. cout в принципе не нужен, я это делал чтобы посмотреть что выведет. Попробую ваш способ.

Добавлено через 2 минуты
Т.е. мне надо делать изначально переменную не string, а wstring ? Чтобы потом заносить отдельные буквы в переменные типа wchar, перед передачей на сервер ? И эти wchar переменные будут по 2 байта, правильно ?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.04.2014, 09:15     Wchar_t #10
Цитата Сообщение от diplomat1129 Посмотреть сообщение
cout в принципе не нужен, я это делал чтобы посмотреть что выведет.
cout будет чушь выдавать (wcout нужен). Реализация send_data() под широкие символы сделана?

Добавлено через 49 секунд
Цитата Сообщение от diplomat1129 Посмотреть сообщение
Чтобы потом заносить отдельные буквы в переменные типа wchar,
Можно просто из wstring брать, через индекс.
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
22.04.2014, 09:16  [ТС]     Wchar_t #11
Пока нет, но я сделаю. Там получается TCP протокол реализован и идет преобразование к string помоему. Ну дальше я уже буду смотреть. Пока на этом этапе надо решить задачу

Добавлено через 36 секунд
Было бы отлично по индексу сразу брать.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.04.2014, 09:18     Wchar_t #12
Вот это непонятно:
Цитата Сообщение от diplomat1129 Посмотреть сообщение
Пока нет, но я сделаю.
Цитата Сообщение от diplomat1129 Посмотреть сообщение
Пока на этом этапе надо решить задачу
На каком на этом, и в чём задача?
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
22.04.2014, 09:19  [ТС]     Wchar_t #13
send_data пока умеет принимать string и vactor<byte> т.е. метод перегружен. и эти методы реализованы уже.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.04.2014, 09:23     Wchar_t #14
Цитата Сообщение от diplomat1129 Посмотреть сообщение
send_data пока умеет принимать string и vactor<byte>
Ничего не пойму... А зачем же вы передаёте, в этот метод wchar_t, ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 09:24     Wchar_t
Еще ссылки по теме:

Wchar_t to char - C++
я тут обнаружил любопытнейшую вещь, оказывается можно просто присваивать char = wchar_t и наоборот ! просто хочу убедиться это как бы без...

Чтение wchar_t - C++
читаю из файла строку wchar_t символов, почему читается какая то хрень?

Тип wchar_t - C++
#include &lt;iostream&gt; using namespace std; int main(){ wchar_t uo = L'a'; cout &lt;&lt; uo; return 0; } Почему выводится не...

wchar_t в string - C++
Собственно, как можно преобразовать wchar_t* в string?

Ввод строки wchar_t[] - C++
#include&lt;iostream&gt; #include&lt;cstdlib&gt; #include&lt;fstream&gt; #include&lt;ctime&gt; #include&lt;string&gt; using namespace std; void...


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

Или воспользуйтесь поиском по форуму:
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
22.04.2014, 09:24  [ТС]     Wchar_t #15
Мне надо на сервер передавать по 2 байта значения. Вот надо чтобы каждая буква в слове весила по 2 байта
Yandex
Объявления
22.04.2014, 09:24     Wchar_t
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru