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

string, c_str - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверка числа на простоту http://www.cyberforum.ru/cpp-beginners/thread620225.html
Почему, если необ. проверить, является ли число простым(напр. ч-ло n),можно просматривать делители не от 2 до n, а от 2 до sqrt(n)? P.S. интересует именно этот алгоритм, а точнее, почему после корня из числа не может больше быть делителей. Спасибо.
C++ Каталоги VC++ расскажите нубу Здравствуйте специалисты :) такой вопрос установил "Visual C++ 2010 Express" В 2008 понятно как добавлять новые каталоги, а вот зашёл в 2010 Выбираю->Сервис->Параметры...-> проекты и решения->Каталоги VC++ а там нету :(... жду ответа :cry: http://www.cyberforum.ru/cpp-beginners/thread620206.html
C++ Подскажите функции или класс
Мне необходимо считывать информацию о состоянии директории - какие файлы, имена, дата изменения. есть какие-нибудь функции или классы для реализации такой задачи?
Двоичные деревья. Итеративный ввод C++
Уважаемые программисты! Помогите пожалуйста решить задачу: Написать НЕРЕКУРСИВНУЮ программу, печатающую все вершины двоичного дерева. При реализации использовать СТЕК ОТЛОЖЕННЫХ ЗАДАНИЙ. Список вершин задается в формате: m , g ], s , y ] ]. Нопонимаю каким образом ввести дерево.
C++ Напишите программу, которая выдает запрос на ввод значения часов и значения минут. http://www.cyberforum.ru/cpp-beginners/thread620182.html
Условие: Напишите программу, которая выдает запрос на ввод значения часов и значения минут. Функция main() должна передать эти два значения функции, имеющей тип void, которая отображает эти два значения в следующем виде: Enter the number of hours: 9 Enter the number of minutes: 28 Time: 9:28 Я понимаю так, что функция должна скомпоновать значения аргументов через двоеточие и...
C++ Операторы торможения программ Какие есть средства для остановки программы, кроме system("pause")? Какие из них наиболее удобны лично вам? подробнее

Показать сообщение отдельно
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
07.07.2012, 21:48     string, c_str
Цитата Сообщение от Ksan Посмотреть сообщение
так это же указатели. Они в любом случае указывают на один и тот же массив
Цитата Сообщение от Schizorb Посмотреть сообщение
Ksan, да... но в первом случае (когда строки разной длины) они у меня указывают на разные. Компилятор gcc.
я думаю что это происходит так
C++
1
string str = "12345"
выделяется память на 6 байт
C++
1
const char *p1 = str.c_str();
указатель на эту память
C++
1
str = "abcdef";
а здесь уже нужно 7 байт
в старый не влазит
выделяем новую память
C++
1
const char *p2 = str.c_str();
указатель уже на неё
старую удаляем НО.. значения в ней остались
посему
C++
1
cout << p1 << '\n' << p2 << endl;
выводит два РАЗНЫХ участка памяти (хотя по мнению менеджера памяти первая уже свободна)
и если выделить память еще раз и что то записать то вполне вероятно что
p1 выведет не 12345 а что то другое
а при
C++
1
2
3
string str = "qwerty";
.............
str = "abcdef";
буфер одинаковый и новая память не выделяется
а просто переписываются значения в том же буфере
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru