29 / 1 / 1
Регистрация: 30.08.2013
Сообщений: 37
|
||||||
1 | ||||||
char* vs std::string20.12.2013, 20:03. Показов 2613. Ответов 6
Метки нет (Все метки)
При чтении чужих сорцов, обратил внимание, что в роли аргументов для функций/методов, как правило используются указатели на массивы чаров, а не СТДшные стринги. Например:
- экономится память за счет того что передается указатель (4 или 8 байтов), а не здоровый объект класса. - экономия времени за счет того что не вызываются конструкторы/методы копирования и недостатки - std::string как правило, более предсказуем чем строка, которая, как я понимаю, хранится в стеке а не в куче (если конечно, не загнать ее туда нарочно) Насколько я прав? Может есть еще какие-то скользкие моменты?
0
|
20.12.2013, 20:03 | |
Ответы с готовыми решениями:
6
ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri ошибка в программе (cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*') Странная ошибка: [Error] no match for call to '(std::string {aka std::basic_string<char>}) (int&)' (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& |
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||||||
20.12.2013, 20:16 | 2 | ||||||||||
Можно так и со string делать:
Зачем string по значению передавать? Передавайте константную ссылку.
0
|
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
|
20.12.2013, 20:18 | 3 |
Этот пункт не имеет никакого смысла. String хранит в себе поинтер который содержит в себе адрес на область в куче... К тому же между программированием и предсказанием мало общего...
0
|
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
|
||||||
20.12.2013, 20:20 | 4 | |||||
Первый скользкий момент:
пишут обычно не а
Поэтому и передают по ссылке, как я указал, чтоб не передавать "здоровый объект класса". А насчет чего там гадать-то?) В string'е по сути та же самая строка, только обернутая в класс для большего удобства. А вообще стандартные функции работают с const char* в основном, и вызывать лишний раз .c_str() как то напряжно при их использовании, да и плюсов от использования string не так уж много (естественно, если эта строка не модифицируется). В общем, смотреть по ситуации нужно. Добавлено через 1 минуту Хорошо сказал!)
0
|
29 / 1 / 1
Регистрация: 30.08.2013
Сообщений: 37
|
|
20.12.2013, 20:40 [ТС] | 5 |
Это все верно, но...
Вот собственно почему? исторически сложилось, по указанным мной причинам, еще почему-то? xtorne21st в цитатник однозначно!
0
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|
20.12.2013, 20:56 | 7 |
Ещё для межъязыкового взаимодействия.
Код C++ можно использовать в виде .DLL, например в С# или Delphi. С# , Delphi ничего не знают о std::string. При передаче же указателя на char проблем не будет.
0
|
20.12.2013, 20:56 | |
20.12.2013, 20:56 | |
Помогаю со студенческими работами здесь
7
Где и почему используют ту или иную строку std::string, char[], System::String^ ? std::string в char* Std::string в const char* std::string и/или char* Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
[Golang] 121. Best Time to Buy and Sell Stock
alhaos 28.01.2025
В этой задаче мы получаем слайс целых чисел, которые означают цену акции в разные моменты времени, и должны вернуть максимально возможную прибыль от купли продажи акции.
/ / . . .
|
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование
Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
|
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы
В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
|
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире
В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
|
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации
В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
|
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии
В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
|
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации
В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
|
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику
Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
|
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику
В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
|
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера
Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
|
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды
В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
|
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике
В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
|