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

Ошибка при работе с функцией 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 diameter, float price); /* * возращает цену квадратного сантиметра пиццы, http://www.cyberforum.ru/cpp-beginners/thread1311817.html
Данные цели числа b1 , b2 , . , b10 - выяснить C++
Данные цели числа b1 , b2 , ... , b10 - выяснить : а) верно , что сумма тех из них , которые больше 20. превышает 100; б) Верно ли, что сумма тех из них , которые меньше 50 , есть четное число .
C++ Настроить Codeblocks
Гуру, помогите новичку! Раньше кодил под Win-консоль в блокноте и запускал компиляцию BAT-ником... Тепреть пробую перейти на Codeblocks! И немного запутался... 1) Можно ли создать нечто вроде мейкфайла для консольной сборки проекта без кодеблокса? Для меня это очень важно! 2) Обязательно "вручную" добавлять новые файлы в проект? Или они могут туда добавляться автоматически при обнаружении...
C++ Создание Skip List, используя STL (C++) http://www.cyberforum.ru/cpp-beginners/thread1311729.html
Кто-нибудь когда-то встречался с подобной реализацией скип списка? Рассматривал варианты реализации с помощью vector и set. Но возникают затруднения с переходом между уровнями, так как индексы для каждого уровня будут свои. o---> o------------------------------------------------------------------> o Top level o---> o-----------------> o----------> o-------------------------------> o Level 3...
C++ Для каждого натурального числа посчитать максимальное произведение цифр, не превышающее заданное N Здравствуйте,есть такая задача,вроде простая,но не могу понять алгоритм решения. Есть натуральное число N, для каждого натурального числа посчитать максимальное произведение цифр не превышающее самое N. Подскажите пожалуйста или алгоритм или пример. Заранее спасибо Пример Вх: 28994 Вых: 10368 Вх: 4876 Вых: 2268 подробнее

Показать сообщение отдельно
hoggy
6368 / 2586 / 451
Регистрация: 15.11.2014
Сообщений: 5,714
Завершенные тесты: 1
26.11.2014, 21:11     Ошибка при работе с функцией strlen
ох, сорри. Я опечатался:

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