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

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

Восстановить пароль Регистрация
 
DarkMasterW
4 / 4 / 0
Регистрация: 25.10.2013
Сообщений: 227
16.03.2016, 13:28     Безопасность передачи string.c_str() в качестве параметра #1
Есть некоторая функция которая принимает в себя си-строку, модифицирует ее (в т.ч. может увеличить количество данных). Безопасно ли передавать в подобную функцию 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++
Фуункция принимает в качестве параметра функцию C++
C++ Функция в качестве параметра
C++ Ошибка передачи параметра в функцию
Передача файла в функцию в качестве параметра C++
C++ Буффер из std::string c_str()

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

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

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

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