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

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

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

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

16.03.2016, 13:28. Просмотров 178. Ответов 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++
C++ string, c_str
Структура в качестве параметра шаблона C++
Функция, принимающая в качестве параметра функцию C++
C++ Функция в качестве параметра
C++ Ошибка передачи параметра в функцию
C++ Буффер из std::string c_str()
C++ Передать функцию в качестве параметра
C++ Передача CString в качестве параметра функции
способы передачи объекта в функцию в качестве параметра C++
Конструктор в качестве параметра operator<< C++

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

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

Функция, void foo(char* str) с учётом того, что может изменится или нет размерность str - это так глупо
yrceus
 Аватар для yrceus
80 / 80 / 54
Регистрация: 25.08.2013
Сообщений: 322
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() в качестве параметра
Ответ Создать тему
Опции темы

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