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

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

Войти
Регистрация
Восстановить пароль
 
DarkMasterW
4 / 4 / 0
Регистрация: 25.10.2013
Сообщений: 227
#1

Безопасность передачи string.c_str() в качестве параметра - C++

16.03.2016, 13:28. Просмотров 220. Ответов 2
Метки нет (Все метки)

Есть некоторая функция которая принимает в себя си-строку, модифицирует ее (в т.ч. может увеличить количество данных). Безопасно ли передавать в подобную функцию string.c_str() без контроля выделенной памяти под string или же надо работать аналогично си строке резервируя память и следя за переполнением?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2016, 13:28     Безопасность передачи string.c_str() в качестве параметра
Посмотрите здесь:
способы передачи объекта в функцию в качестве параметра C++
C++ string, c_str
C++ Буффер из std::string c_str()
C++ Ошибка передачи параметра в функцию
C++ Функция в качестве параметра
C++ Передать функцию в качестве параметра
Передача файла в качестве параметра C++
Структура в качестве параметра шаблона C++
Конструктор в качестве параметра operator<< C++
Как привести тип параметра для передачи в функцию массивов C++
Функции, передача массива в качестве параметра C++
Указатель на функцию в качестве параметра функции C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
C++ Game Dev
2399 / 1093 / 237
Регистрация: 30.11.2013
Сообщений: 3,620
16.03.2016, 13:38     Безопасность передачи string.c_str() в качестве параметра #2
DarkMasterW, не безопастно.

Функция, void foo(char* str) с учётом того, что может изменится или нет размерность str - это так глупо
yrceus
81 / 81 / 54
Регистрация: 25.08.2013
Сообщений: 326
16.03.2016, 13:44     Безопасность передачи string.c_str() в качестве параметра #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Да и не сможет изменить, и по значению нельзя передать))). string::c_str() возвращает указатель на константу.
C++
1
2
3
4
5
6
    string x = "abc";
    const char *z = x.c_str(); 
 
    char *l = x.c_str(); // ошибка
 
    printf("%x   %x\n", z, &x.front()); // адрес один
Yandex
Объявления
16.03.2016, 13:44     Безопасность передачи string.c_str() в качестве параметра
Ответ Создать тему
Опции темы

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