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

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

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

Показать сообщение отдельно
hoggy
5030 / 2113 / 403
Регистрация: 15.11.2014
Сообщений: 4,797
Завершенные тесты: 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() );
 
Текущее время: 06:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru