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

Сколько живёт строковый литерал? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Динамический массив структур http://www.cyberforum.ru/cpp-beginners/thread1090853.html
:-| по рисунках нужно написать программы(отдельные), которая обеспечят следующее расположение данных в памяти
C++ Как подключить библиотеку? Скачал c boost.org архив с библиотекой boost скинул в папку @C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\\lib\boost@ пытаюсь подключить: #include <C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\boost\boost\filesystem\path.hpp> #include <C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\boost\boost\filesystem\fstream.hpp> #include <C:\Program Files... http://www.cyberforum.ru/cpp-beginners/thread1090834.html
C++ не правильно выводит результат
тестю код на таком примере 6 6 1 1 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 1 0 1
Сортировка вектора C++
struct A { int a; double e; }; vector <A> z; sort(z.begin(), z.end(), ......) отсортировать по а ( дописать где многоточие) Прошу помочь, дописать только там где многоточие, без дополнительных строк, заранее спасибо
C++ В одномерном массиве А из n элементов удалить средний элемент http://www.cyberforum.ru/cpp-beginners/thread1090812.html
В одномерном массиве А из n элементов удалить средний элемент
C++ Как узнать что при считывание очередного слова в string был сделан переход на новую строку в файле? подскажите пожалуйста, как узнать что при считывание очередного слова в string был сделан переход на новую строку в файле?. ПС не предлагайте метод getline подробнее

Показать сообщение отдельно
mariko_11
2 / 2 / 1
Регистрация: 11.03.2013
Сообщений: 64
06.02.2014, 22:18  [ТС]     Сколько живёт строковый литерал?
Цитата Сообщение от Ilot Посмотреть сообщение
Так не пробуйте. Уж лучше вот так:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class myClass
{
    public:
    myClass(const char *s)
    {
        str = new char[strlen(s) + 1];
        strcpy(str,s);
        str[strlen(s)] = '\0';
    }
    myClass(const myClass&);
    void print() {cout << str << endl;}
    ~myClass()
    {
        delete [] str;
    }
 
private:
    char const *str;
};
Чем именно лучше? В учебниках встречается такой способ, но почему именно он ? Чем хуже сделать явное приведение (char *)"ne erunda li?"? Это вот будет создана копия что ли или чо, просто пытаемся обуть компилятор и получаем доступ к той самой строчке-литералу?

Добавлено через 6 минут
Почему приводятся примеры с динамическим распределением памяти, а не тупо как у Black Fregat - поставить const и радоваться (а йадураг, не дошло так сделать-то...)?

Добавлено через 46 секунд
Цитата Сообщение от Убежденный Посмотреть сообщение
В стандарте языка (C++98 2.13.4 String literals) сказано, что строковой
литерал имеет статическое время жизни (static storage duration).
А в современном? Стандарт недавно поменялся. Кто-нибудь знает, ихде там это написано?
 
Текущее время: 11:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru