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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Ksan
27 / 27 / 0
Регистрация: 02.11.2010
Сообщений: 370
#1

strlen - C++

28.06.2012, 14:56. Просмотров 1721. Ответов 24
Метки нет (Все метки)

Есть ли подобие strlen, но для других типов данных? int*, short* и тп?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2012, 14:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос strlen (C++):

strlen - C++
добрый вечер. пытаюсь придумать менее затратный strlen) вопрос появился: максимальный размер строки без выделения в куче и с выделением...

strlen - C++
Или я дурак,или лыжи не едут??? Люди добрые, скажите чего не так. Не могу определить длину строки. Хоть вручную считай... вот код int...

strlen()+1 - C++
Зачем использовать strlen в данном случае? char s; get.cin(s,strlen(s)+1);

Не работает strlen - C++
сабж не могу взять длину строки функция определения возвращает не понятные значения #include <stdlib.h> #include <stdio.h> ...

своя strlen - C++
#include<iostream.h> int strlen(char *string) { int lengh=0; while(*string++) lengh++; return ++lengh; } ...

функция strlen - C++
#include "stdafx.h" #include <stdio.h> #include <conio.h> #include <string.h> #define maxline 1000 // for s #define eof -1...

24
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,019
28.06.2012, 14:58 #2
sizeof(arr) / sizeof(*arr)
1
Ksan
27 / 27 / 0
Регистрация: 02.11.2010
Сообщений: 370
28.06.2012, 15:03  [ТС] #3
Спасибо!

Добавлено через 2 минуты
MrGluck, а зачем тогда нужен strlen, если для char* можно использовать абсолютно то же?
0
OcbMuHor
Заблокирован
28.06.2012, 15:07 #4
MrGluck,
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
int main()
{
    int *pArray = new int[ 10 ];
    std::cout << ( sizeof( pArray ) / sizeof( *pArray ) ) << std::endl;
    delete [] pArray;
 
    return 0;
}
Цитата Сообщение от Ksan Посмотреть сообщение
Есть ли подобие strlen, но для других типов данных? int*, short* и тп?
а зачем? Зачем работать с массивом не зная его размер? указатели для чего?
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
28.06.2012, 15:08 #5
MrGluck, Ну все таки для указателей такой вариант не покатит. Нет, для указателей нет никакой переносимой возможности узнать это.
0
OcbMuHor
Заблокирован
28.06.2012, 15:18 #6
ForEveR, а что насчет непереносимой возможности?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,019
28.06.2012, 15:23 #7
Да, мой вариант катит только для статических массвов. Ну тогда никак, с динамическими надо всегда рядом с массивом передавать его размерность.

Слышал что-то про то, что можно все-же как-то достать размер у динамического, но это делается на конкретных компиляторах конкретной реализацией.
0
Ksan
27 / 27 / 0
Регистрация: 02.11.2010
Сообщений: 370
28.06.2012, 15:27  [ТС] #8
Меня интересовали динамические.

На вопрос зачем: что бы не передавать все время размер. Это неудобно.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
28.06.2012, 15:34 #9
Ksan, Юзай вектор. В чем трабл?

OcbMuHor, Ну для gcc к примеру malloc_usable_size. Возвращает размер, но учитывает так же информацию, которая забита в этот кусок памяти для free.
0
OcbMuHor
Заблокирован
28.06.2012, 15:34 #10
Цитата Сообщение от Ksan Посмотреть сообщение
Это неудобно
весомый аргумент . Т.е. вычислять в рантайме, тратя на это много 100500 тактов - это удобно, а кинуть аргумент в стек или регистр это неудобно...
0
Ksan
27 / 27 / 0
Регистрация: 02.11.2010
Сообщений: 370
28.06.2012, 15:37  [ТС] #11
ForEveR, не люблю вектора. К тому же когда пишешь свой класс для общего случая, лучше не помещать внутрь другие классы, что бы не получилась цепочка зависимостей.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
28.06.2012, 15:38 #12
Ksan, Серьезно? То есть стандартная библиотека написана просто так? Разочарую вас капитально, когда пишешь свой класс - можно и нужно пользоваться тем, что написано до этого.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,019
28.06.2012, 15:39 #13
Это неудобно.
- Это логично.
А вобще да, STL позаботился о том, чтобы все было "удобно". Но, ИМХО, научись ка лучше сначала с динамическими массивами работать, а то будет серьезный пробел в знании.
0
Ksan
27 / 27 / 0
Регистрация: 02.11.2010
Сообщений: 370
28.06.2012, 15:40  [ТС] #14
MrGluck, я умею работать с динамическими массивами. На основе чего вы сделали вывод о моем незнании?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,019
28.06.2012, 15:40 #15
Ksan, пиши свои велосипеды. Квадратные колеса - это модно. В STL уже все придумано для того, чтобы твой код был не только удобен, но и расширяем. А к тому, что ты напишешь, скорее всего, и багажник не прикрутишь.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2012, 15:40
Привет! Вот еще темы с ответами:

Проблема с strlen - C++
Доброго времени суток. При подсчете длин строки strlen считает до 1 пробела, в итоге в 2 строке только 1 слово из 1 строки. В чем может...

C++ <cstring> strlen() - C++
Народ, может ли функция strlen() обрабатывать тип не const char, а char ? компилятор ошибку выдаёт str.insert(Position_Begin(c),...

Объясните разницу в strlen() - C++
Вот код: char ch = &quot;Hello, World!&quot;; char ch2 = {'H','e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!'}; // тоже самое...

Почему не работает strlen()??? - C++
Код программы: #include&lt;string&gt; #include&lt;iostream&gt; using namespace std; int main(){ string s; getline(cin, s, '\n'); ...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
28.06.2012, 15:40
Ответ Создать тему
Опции темы

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