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

[STL] Работа со std::string - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структура о веществе и сортировка http://www.cyberforum.ru/cpp-beginners/thread642077.html
Пишу структуру, описывающую информацию о веществе: название, удельный вес и проводимость(проводник, полупроводник, изолятор). Написать функции ввода и вывода; для сортировки данных по любому из...
C++ Наследование абстрактного класса, компилятор достал материться Уже весь мозг сломал, не понимаю, почему компилятор начинает ругаться. Есть абстрактный базовый класс в отдельном хедере: #pragma once class Shape { public: /*virtual double Dist(const... http://www.cyberforum.ru/cpp-beginners/thread642072.html
C++ "Первый после Hello, world!". Программа решения квадратного уравнения
Добрый день, уважаемые форумчане. Покритикуйте пожалуйста, программу вывода на экран в полиномиальной форме и нахождения корней квадратного уравнения. Особые проблемы, собственно, возникли с первой...
C++ Классы наследники
Всем привет, прошу помочь разобраться с ошибкой: 1>e:\my programs for c++\lesson 9 numb 9\lesson 9 numb 9\main.cpp(59) : error C2661: publication2::publication2: нет перегруженной функции,...
C++ Приведение LPVOID к классу "непостоянной" величины http://www.cyberforum.ru/cpp-beginners/thread642016.html
В поток посылаю экземпляр класс : userThread = CreateThread(NULL, NULL, ConnectionShell, (LPVOID)(&userCurrent), NULL, NULL); Где пытаюсь излвечь экземпляр : DWORD CALLBACK ConnectionShell(LPVOID...
C++ В чём разница между total = total + trans и total += trans? Добрый день. Изучаю четвертое издание Липпмана. Автор задает вопрос: "В программе книжного магазина, при суммировании объектов trans и total, использован обычный оператор плюс, а не составной... подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
25.08.2012, 18:21
Потому что
C++
1
2
3
4
5
string GetSomething()
{
    string str = "something";
    return str.c_str();
}
Фактически значит
C++
1
2
3
4
5
string GetSomething()
{
    string str = "something";
    return string(str.c_str());
}
Возвращается копия этой строки. Она сохраняется при выходе, оригинал — нет.

А в случае
C++
1
2
3
4
5
const char* GetSomething()
{
    string str = "something";
    return str.c_str();
}
возвращается копия указателя на массив char, который хранится в локальной переменной str. Эта локальная переменная вместе с массивом умирает при выходе из функции. А указатель на неё остаётся, но он указывает уже чёрти куда.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.