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

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

Войти
Регистрация
Восстановить пароль
 
D_Ok
44 / 33 / 12
Регистрация: 11.02.2014
Сообщений: 134
#1

Размер строки указателя - C++

28.04.2014, 09:10. Просмотров 384. Ответов 10
Метки нет (Все метки)

char *str = new char [10];
str = "123";
sizeof(str) - отображает размер указателя, а как вывести размер самой строки строки?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1784 / 1159 / 224
Регистрация: 16.05.2013
Сообщений: 3,050
Записей в блоге: 5
Завершенные тесты: 1
28.04.2014, 09:20     Размер строки указателя #2
Вы не путайте божий дар с яичницей.
Узнать размер си строки просто:
C++
1
2
char str[] = "blablabla";
len = sizeof(str) / sizeof(str[0]);
Если же вы динамически выделяете память, то так сделать нельзя. Да и зачем вы же в курсе какой объем вы выделяете.
D_Ok
44 / 33 / 12
Регистрация: 11.02.2014
Сообщений: 134
28.04.2014, 10:03  [ТС]     Размер строки указателя #3
Цитата Сообщение от Ilot Посмотреть сообщение
Если же вы динамически выделяете память, то так сделать нельзя. Да и зачем вы же в курсе какой объем вы выделяете.
насчет простой строки я знаю, интересует именно динамическое выделение, сейчас знаю да, а если я дальше по пересоздам с другой размер, чтобы не искать и не смотреть какой размер, есть ли функция позволяющая узнать размер строки? Но только не длину как показали вы, а именно размер в битах.
Ilot
Модератор
Эксперт С++
1784 / 1159 / 224
Регистрация: 16.05.2013
Сообщений: 3,050
Записей в блоге: 5
Завершенные тесты: 1
28.04.2014, 10:20     Размер строки указателя #4
Вводите переменную в которой будете хранить размер выделенной памяти. Иначе по указателю это не удасться выяснить. Если я правильно понимаю выделением памяти занимается система и она хранит информацию о занятой и свободной памяти. Как эту информацию из нее вытянуть без понятия
fasked
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
28.04.2014, 10:21     Размер строки указателя #5
D_Ok, в стандарте языка такой возможности не предусмотрено, поэтому реально возможно только запомнить размер в момент выделения памяти, т.е. в момент вызова malloc. Для GNU опять же есть расширение http://man7.org/linux/man-pages/man3...le_size.3.html.
Jewbacabra
Эксперт PHP
2064 / 1728 / 633
Регистрация: 24.04.2014
Сообщений: 4,925
28.04.2014, 10:23     Размер строки указателя #6
Тогда уж так надо делать:
C++
1
2
3
char *str = new char [10];
delete[] str;
str = "123";
или так
C++
1
2
char *str = new char [10];
strcpy(str, "123")
А узнать длину строки можно с помощью функции strlen
fasked
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
28.04.2014, 10:24     Размер строки указателя #7
Jewbacabra, так делать не надо.
Kuzia domovenok
1888 / 1743 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
28.04.2014, 10:27     Размер строки указателя #8
fasked, как не надо? Всё правильно сказал! У автора ерунда написана - Jewbacabra исправил!
Цитата Сообщение от D_Ok Посмотреть сообщение
C++
1
2
char *str = new char [10];
str = "123";
fasked
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
28.04.2014, 10:29     Размер строки указателя #9
Kuzia domovenok, тут у всех ерунда написана А не надо записывать в неконстантный указатель строковый литерал. Хотя поправка, использующая strcpy, уже ближе к истине.
Kuzia domovenok
1888 / 1743 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
28.04.2014, 11:15     Размер строки указателя #10
Цитата Сообщение от fasked Посмотреть сообщение
А не надо записывать в неконстантный указатель строковый литерал.
указатель на то и указатель. Хочу и указываю на что угодно. Хоть на стек, хоть на кучу, хоть на NULL хоть на литералы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2014, 11:17     Размер строки указателя
Еще ссылки по теме:

Объяснить от чего зависит размер указателя и что такое арифметика указателей C++
C++ Узнать размер строки до её считывания
Размер указателя C++
C++ Размер указателя short int
C++ Ввод строки через указателя

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
28.04.2014, 11:17     Размер строки указателя #11
Kuzia domovenok, так я и не спорю с тем, что указывать можно куда угодно. Проблема в том, что после такого объявления может возникнуть желание изменить что-либо в литерале, а это уже UB.
Yandex
Объявления
28.04.2014, 11:17     Размер строки указателя
Ответ Создать тему
Опции темы

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