1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 93
|
||||||
1 | ||||||
Выводятся дополнительные странные символы из vector<unsigned char>26.03.2014, 10:31. Показов 1663. Ответов 16
Метки нет Все метки)
(
Здравствуйте! Вот такой простой код:
[cut] Хотя я ожидал, что будет так: a s d Если убрать ссылку перед переменной(&), то получается как надо. Но ведь ссылка это как адрес переменной. Почему в первом случае я получаю не то, что надо, и откуда появляется краказябра?
0
|
|
26.03.2014, 10:31 | |
Ответы с готовыми решениями:
16
Unsigned char to vector
Char const* str to vector<unsigned int> Выводятся странные символы в цикле вывода символа |
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
26.03.2014, 10:36 | 2 |
потому что &buf[i] это адрес массива unsigned char, т.е это аналогично
char mass[] = "abc"; cout<<mass<<endl; т.е Вы выводите не элемент а массив чаров (для него cout работает по-другому) Вывод, убрать & ибо Вам это не нужно
1
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
26.03.2014, 10:37 | 4 |
1
|
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 93
|
|
26.03.2014, 11:25 [ТС] | 5 |
Спасибо за ответы! В силу того, что я новичок, у меня возникло противоречие, воспринимая Ilot и aLarman...
Раз передается указатель, почему выводится строка? Значит просто адрес, а не то, что находится по этому адресу? Тогда откуда там всё равно появились строки, да и разные. Раз они разные, то адреса разных положении массива тоже разные. А ещё... откуда берётся краказябра?
0
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
||||||
26.03.2014, 11:32 | 6 | |||||
я же написал попробуйте
Добавлено через 14 секунд да правильно Добавлено через 1 минуту Тогда откуда там всё равно появились строки, да и разные. &mass[0] &mass[1] &mass[2] у Вас такой перебор в цикле получается, т.е Вы выводите строку, причем на каждой итерации смещаетесь вправо(начинаете вывод со след символа) Добавлено через 2 минуты а cout если я ничего не напутал будет так выводить он Выводит строку представленную массивом символов от адреса который ему указали до \0 или просто 0 значения байта, т.к Вы скопировали строку в вектор, за исключением \0 символа (он в строке последний), то вывод заходит за пределы вектора (идет дальше по памяти) и выводит то что там есть до тех пор пока не найдет 0, f Dfv nfr gjdtpkj xnj jy nfv tcnm ^) Добавлено через 18 секунд *а Вам так повезло что он там есть*
0
|
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 93
|
||||||
26.03.2014, 12:05 [ТС] | 7 | |||||
Большое спасибо, стало ясно
![]() Ваш способ я попробовал, он явно проще, да и лучше!
asd sd d Правда мне нужно было изначально "asd", можно тогда использовать &mass[0]. Если нет, то чем это чревато?
0
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
26.03.2014, 12:06 | 8 |
тем что никто не может обещать что у тебя строка закончится \0 и Вывод будет продолжаться до первого 0 в памяти
0
|
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 93
|
|
26.03.2014, 13:02 [ТС] | 9 |
Но ведь в вами предложенном методе не оказалось Краказябры... или это просто случайность и в дальнейшем я всё равно пожалею?
0
|
Модератор
![]() 8843 / 6623 / 902
Регистрация: 14.02.2011
Сообщений: 23,311
|
|||||||||||
26.03.2014, 13:15 | 10 | ||||||||||
если тебе нужно строку то тебе уже все объяснили а если отдельный символ то самое простое или использовать временную переменную
1
|
18159 / 9492 / 2322
Регистрация: 30.01.2014
Сообщений: 16,597
|
|||||||||||
26.03.2014, 13:26 | 13 | ||||||||||
С чего бы? Строкой он его видит (и не только он), если адрес передавать:
1
|
Tulosba
|
26.03.2014, 13:27
#14
|
0
|
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 93
|
|
26.03.2014, 14:34 [ТС] | 15 |
Большое спасибо всем!
0
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
26.03.2014, 15:49 | 16 |
0
|
Модератор
![]() 8843 / 6623 / 902
Регистрация: 14.02.2011
Сообщений: 23,311
|
|
26.03.2014, 15:56 | 17 |
0
|
26.03.2014, 15:56 | |
Помогаю со студенческими работами здесь
17
Приведение типов unsigned char[2] to unsigned char [64]
Unsigned char [n] to array<unsigned char>^ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |