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

const char не инициализируется при объявлении - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Есть ли разница в данных объявлениях массива? http://www.cyberforum.ru/cpp-beginners/thread953828.html
string *array={"string1","string2"}; string array = {"string1","string2"}; В первом случае обьявляется указатель на массив, но ведь имя самого массива(второй вариант) по умолчанию уже является...
C++ не работает функция, не могу найти причину Всех с праздником! Задача: Необходимо написать программу состоящую из нескольких функция - принимающая данные в массив, выводящая на экран массив и функция реверса(поменять порядок элементов... http://www.cyberforum.ru/cpp-beginners/thread953815.html
C++ что это за ошибка
Вот http://snag.gy/Z3aDn.jpg
Динамический массив структур. Почему данные доступны после выполнения операции delete [] C++
Всем привет! Выполнил вот такое задание. После того как вывелись данные трех структур, очищаю выделенную область памяти оператором delete ... Чтобы убедиться, что память очистилась, после оператора...
C++ Ошибка при компиляции http://www.cyberforum.ru/cpp-beginners/thread953769.html
Пытаюсь перегрузить оператор индексации, но на этапе компиляции при обращении к экземпляру класса Elem выводит ошибку "warning: pointer to a function used in arithmetic". Конструктор по умолчанию...
C++ В чем ошибка? #include <iostream> using namespace std; int value;{ cout <<"Enter number:" <<endl; cin >> value; if(value>0) подробнее

Показать сообщение отдельно
racushka
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 40
13.09.2013, 23:15  [ТС]
Цитата Сообщение от rangerx Посмотреть сообщение
Так вообще никогда не нужно делать. c_str() возвращает указатель на данные используемые непосредственно строкой f, следовательно любое изменение содержимого этой строки может привести к тому, что указатель filename станет недействительным. Простой пример, который выглядит вполне корректным
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <string>
#include <cassert>
 
int main()
{
    std::string s1 = "abc";
    std::string s2 = s1;
 
    const char* p = s2.c_str();
    assert(s2.c_str() == p);   // нормально
 
    s2[0] = '!';               // всего лишь меняем первый символ
    assert(s2.c_str() == p);   // ???
}
На первый взгляд всё нормально. Но, если класс std::string использует стратегию copy-on-write, p будет указывать уже совсем не туда, куда ожидалось. И это далеко не самый коварный пример. Если приходится использовать метод c_str(), то используйте его непорсдественно там, где это необходимо.
Спасибо. Буду знать.
А что на счет вот этого? Почему так может быть ведь программа не работает в релиз

C++
1
2
3
4
for(int countTemp = 0; countTemp<NumberTemp; countTemp++)
{
     if (FoundPointsFinish[countTemp].value>=ThresholdVal)
     {...
Добавлено через 49 минут
countTemp сразу принимает очень большое значение и соответственно дальше алгоритм не проходит и игнорит весь код в цикле
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.