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

Падение Release - C++

Восстановить пароль Регистрация
 
Systemes
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 11
10.04.2013, 17:09     Падение Release #1
Всем привет. Есть код по конвертированию float в строку char*
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <sstream>
using std::stringstream;
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
 
char* conv_f_to_s(float num){
     stringstream iostr;
     char *s;
    // num = round(num, 4); // обрезаем до 4-х символов
     s = new char[10];
     iostr<<num;
     iostr>>s;
     return s;
}
В дебаге код работает, в релизе крашит программу. Причина в строчках iostr<<num; iostr>>s; Как исправить хз(П.С. Код кстати нашел где-то тут на форуме
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2013, 17:09     Падение Release
Посмотрите здесь:

Падение шарика C++
Падение капли C++
Не компилируется в Release C++
C++ Не работает в release
C++ Release
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GetVariable
 Аватар для GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
10.04.2013, 17:20     Падение Release #2
C++
1
2
3
4
5
6
7
8
9
#include <sstream>
 
string convertDouble(double value) 
{
  std::ostringstream o;
  if (!(o << value))
    return "";
  return o.str();
}
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
10.04.2013, 17:31     Падение Release #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <sstream>
#include <iomanip>
 
char* ftoa_1(float value)
  {
  std::stringstream ss;
  ss << std::fixed << std::showpoint << std::setprecision(2) << value;
 
  char *str = new char[ss.str().length() + 1]();
  strcpy(str, ss.str().c_str());
  
  return str;
  }
 
char* ftoa_2(float value)
  {
  int size = 0;
  for (int dec = value; dec; dec /= 10, ++size);
 
  char *str = new char[size + 2 + 1]();
  sprintf(str, "%.2f", value);
 
  return str;
  }
 
int main()
  {
  float value = 10.53f;
 
  char *s1 = ftoa_1(value);
  char *s2 = ftoa_2(value);
 
  printf("1: %s 2: %s\n", s1, s2);
 
  return 0;
  }
Systemes
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 11
10.04.2013, 17:54  [ТС]     Падение Release #4
спасибо! работает)))
Yandex
Объявления
10.04.2013, 17:54     Падение Release
Ответ Создать тему
Опции темы

Текущее время: 13:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru