Форум программистов, компьютерный форум, киберфорум
Наши страницы

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 Выбираю->Сервис->Параметры...-> проекты и... http://www.cyberforum.ru/cpp-beginners/thread620206.html
C++ Подскажите функции или класс
Мне необходимо считывать информацию о состоянии директории - какие файлы, имена, дата изменения. есть какие-нибудь функции или классы для реализации такой задачи?
Двоичные деревья. Итеративный ввод C++
Уважаемые программисты! Помогите пожалуйста решить задачу: Написать НЕРЕКУРСИВНУЮ программу, печатающую все вершины двоичного дерева. При реализации использовать СТЕК ОТЛОЖЕННЫХ ЗАДАНИЙ. Список...
C++ Напишите программу, которая выдает запрос на ввод значения часов и значения минут. http://www.cyberforum.ru/cpp-beginners/thread620182.html
Условие: Напишите программу, которая выдает запрос на ввод значения часов и значения минут. Функция main() должна передать эти два значения функции, имеющей тип void, которая отображает эти два...
C++ Операторы торможения программ Какие есть средства для остановки программы, кроме system("pause")? Какие из них наиболее удобны лично вам? подробнее

Показать сообщение отдельно
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.07.2012, 01:33
вот поучительный код для любителей нарушать правила:
http://liveworkspace.org/code/3d030d41e9cd8aa9e9ea195699a096fb
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
int main()
{
  std::string str1 = "str";
  std::string str2 = str1;
 
  std::cout << "str1 = " << str1 << std::endl;
  std::cout << "str2 = " << str2 << std::endl;
 
  char* pStr1 = (char*) str1.c_str();
  pStr1[0] = 'x';
 
  std::cout << "str1 = " << str1 << std::endl;
  std::cout << "str2 = " << str2 << std::endl; // сюрприз
 
  return 0;
}
Output:
str1 = str
str2 = str
str1 = xtr
str2 = xtr // как же так. ведь эту строку не меняли.

Это происходит из-за того, что там std::string реализована с использованием оптимизации "копирование при записи". В восьмой студии строка без такой оптимизации сделана.
8
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru