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

Ошибка при работе с функцией strlen - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверить истинность утверждений http://www.cyberforum.ru/cpp-beginners/thread1311825.html
Данные цели числа b1 , b2 , ... , b10 - выяснить : а) верно , что сумма тех из них , которые больше 20. превышает 100; б) Верно ли, что сумма тех из них , которые меньше 50 , есть четное число .
C++ Ввод чисел через функцию Всем привет, подскажите как модифицировать код, чтобы числа вводились через вывоз функции? #include <iostream> #include <windows.h> using namespace std; float unitprice_circle(int... http://www.cyberforum.ru/cpp-beginners/thread1311817.html
Данные цели числа b1 , b2 , . , b10 - выяснить C++
Данные цели числа b1 , b2 , ... , b10 - выяснить : а) верно , что сумма тех из них , которые больше 20. превышает 100; б) Верно ли, что сумма тех из них , которые меньше 50 , есть четное число .
C++ Настроить Codeblocks
Гуру, помогите новичку! Раньше кодил под Win-консоль в блокноте и запускал компиляцию BAT-ником... Тепреть пробую перейти на Codeblocks! И немного запутался... 1) Можно ли создать нечто вроде...
C++ Создание Skip List, используя STL (C++) http://www.cyberforum.ru/cpp-beginners/thread1311729.html
Кто-нибудь когда-то встречался с подобной реализацией скип списка? Рассматривал варианты реализации с помощью vector и set. Но возникают затруднения с переходом между уровнями, так как индексы для...
C++ Для каждого натурального числа посчитать максимальное произведение цифр, не превышающее заданное N Здравствуйте,есть такая задача,вроде простая,но не могу понять алгоритм решения. Есть натуральное число N, для каждого натурального числа посчитать максимальное произведение цифр не превышающее... подробнее

Показать сообщение отдельно
hoggy
6690 / 2872 / 492
Регистрация: 15.11.2014
Сообщений: 6,460
Завершенные тесты: 1
26.11.2014, 21:11
ох, сорри. Я опечатался:

C++
1
i = strlen(a.c_str() );
Добавлено через 5 минут
Цитата Сообщение от Frip Посмотреть сообщение
А вы можете пояснить, почему именно так?
Конечно. Вы и сами можете легко это узнать:

1. Берем функцию strlen, и смотрим что ей нужно:
http://www.cplusplus.com/reference/cstring/strlen/

C++
1
size_t strlen ( const char * str );

Как вы видите, функция ожидает на входе переменную типа const char *

Ваша переменная 'а' чем является?

C++
1
string a;
Она является string, а вовсе не const char *
Именно это и не понравилось компилятору.

Значит нужно взять стринг, и каким то образом вытащить из него const char *

Смотрим, что у нас умеет string:
http://www.cplusplus.com/reference/string/string/

Если вы не опытный, и по имени функции не можете сразу догадаться, что значит c_str (си-строка), тогда просто просматриваете функции-члены класса, и выискиваете среди них ту, что возвращает объект нужного типа:

http://www.cplusplus.com/reference/string/string/c_str/

C++
1
const char* c_str() const;
итого:

C++
1
size_t strlen ( const char * str );
и
C++
1
const char* c_str() const;
получаем:

C++
1
i = strlen(a.c_str() );
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru