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

Количество символов в const char* - C++

Восстановить пароль Регистрация
 
Hellko
6 / 6 / 1
Регистрация: 17.11.2012
Сообщений: 65
25.03.2013, 20:48     Количество символов в const char* #1
Я посылаю в функцию строку
C++
1
fun("text");
функция выглядит так:
C++
1
fun(const char* in) {...}
Как узнать количество переданных символов? ведь символ конца строки таким образом не передается...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pi_X_el
Заблокирован
25.03.2013, 20:54     Количество символов в const char* #2
Функция strlen(in); вернет количество символов в строке
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
25.03.2013, 21:03     Количество символов в const char* #3
Hellko, ?
Такой велосипед легко отработает:
C++
1
2
3
    int cnt(0);
    while(*str++)
           cnt++;
Leshak
259 / 235 / 40
Регистрация: 10.12.2011
Сообщений: 513
25.03.2013, 21:04     Количество символов в const char* #4
Без strlen

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
int length ( char* text);
 
int main(){
    char str[] = " Short String";
    char* pstr = str;
    std::cout<<length(i)<<"\n";/* количество символов*/
    std::cout<<sizeof(str)<<"\n";/*реальный размер массива*/
}
int length ( char* text){
     int i = 0;
     while ( *text++ ) i++;
    return i;
}
Hellko
6 / 6 / 1
Регистрация: 17.11.2012
Сообщений: 65
25.03.2013, 21:15  [ТС]     Количество символов в const char* #5
Что-то я затупил. Действительно, символ конца строки передается. =)
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
25.03.2013, 21:19     Количество символов в const char* #6
Цитата Сообщение от Hellko Посмотреть сообщение
Действительно, символ конца строки передается. =)
На самом деле и сама строка то не передается.
Когда компилятор видит в коде строковую константу он размещает ее в другом месте, а в код подставляет указатель на нее. Поэтому вот это
C++
1
func("text");
на самом деле превратиться вот в это
C++
1
2
const char str[] = "text"; // эта строка будет лежать в специальном куске памяти
func (str);
Croessmah
25.03.2013, 21:41
  #7

Не по теме:

Kastaneda, я бы скобочки то убрал и звездочку перед str поставил.

C++
1
const char * str = "text";
Всё-таки это константный строковый литерал

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2013, 21:57     Количество символов в const char*
Еще ссылки по теме:

error: incompatible types in assignment of 'const char [5]' to 'char [10]' C++
невозможно преобразовать параметр 1 из 'char' в 'const char *' C++
C++ Чем отличаются объявления const char* и const* char

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

Или воспользуйтесь поиском по форуму:
Kastaneda
25.03.2013, 21:57     Количество символов в const char*
  #8

Не по теме:

Croessmah, я целенаправленно так сделал.
Предполагается, что строка кода с массивом из моего примера находится в недоступном программисту месте (сегмент данных с пометкой read only). А массив вместо указателя нужен, чтоб подчеркнуть, что память под строку все же выделяется. С указателем боюсь это не столь очевидно.

Yandex
Объявления
25.03.2013, 21:57     Количество символов в const char*
Ответ Создать тему
Опции темы

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