Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2016, 16:53   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию Перевести double в string

Добрый день. Подскажите пожалуйста, как правильно преобразовать массив double в тип string в следующей ситуации: есть класс, в котором, в одном из методов,происходят некоторые изменения в массиве double arr[30], после этих изменений, мне надо преобразовать этот массив в тип String и вернуть его в файл Form1 для вывода результата изменений в окне, делаю я это таким образом:
Код:
String^ MyClass::TabFunc()
{
double arr[30];
    int i=0;
    for(double x=x1;x<x2;x+=h)
    {
        arr[i]=sin(x);  
        i++;
    }
...
String ^str=System::Convert::ToString( arr);
    return str;
}
Form1.h
Код:
...
    String ^s33=A->TabFunc();
      this->richTextBox1->AppendText(s33); //ЗДЕСЬ ПРОБЛЕМА
В результате мне почему-то в richTextBox1 выдает: True, вместо массива и такое предупреждение в выводе: warning C4800: double *: принудительно задано логическое значение "true" или "false" (предупреждение о производительности)
Что я делаю не так? Спасибо
Вероника99 вне форума Ответить с цитированием
Старый 01.10.2016, 17:37   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Проблема не тама, а выше. Потому что ToString принимает в аргументы дабл (или что там надо), а что такое arr? Указатель...
p51x вне форума Ответить с цитированием
Старый 01.10.2016, 18:19   #3
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

А что делать? Я всегда считала,что указатель это: double *arr; а не double arr[30];
Вероника99 вне форума Ответить с цитированием
Старый 01.10.2016, 18:23   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы пытаетесь массив перевести в строку, а не double(элемент массива) в строку.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.10.2016, 18:41   #5
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Решение такое?А как тогда вывод сделать?
Код:
	for(int j=0;j<i;j++)
str=System::Convert::ToString( arr[i]);
Вероника99 вне форума Ответить с цитированием
Старый 02.10.2016, 14:59   #6
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Как правильно сделать, не подскажите?
Вероника99 вне форума Ответить с цитированием
Старый 02.10.2016, 15:57   #7
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Цитата:
Сообщение от Вероника99 Посмотреть сообщение
Решение такое?А как тогда вывод сделать?
Код:
	for(int j=0;j<i;j++)
str=System::Convert::ToString( arr[i]);
так, но не присваивая str, а дописывая (Append, + или как там в Билдере) строку и разделитель (", " например)
GreenWizard вне форума Ответить с цитированием
Старый 02.10.2016, 17:18   #8
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Я не могу найти правильный синтаксис для С++. Насколько я поняла, то нужно for(int j=0;j<i;j++)
System::Convert::ToString( arr[i])... здесь еще добавить Append;
вот нашла пример для С#
Код:
bool flag = false;
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("The value of the flag is ").Append(flag).Append(".");
Вероника99 вне форума Ответить с цитированием
Старый 02.10.2016, 19:52   #9
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Код:
  double arr[30];
  int n = 30;

  String s;
  if(n > 0){
    s.printf("%.3f", arr[0]);
    for (int i = 1; i < n; i++){
      s.cat_printf(", %.3f", arr[i]);
    }
  }
  ShowMessage(s);
GreenWizard вне форума Ответить с цитированием
Старый 03.10.2016, 10:06   #10
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

printf можно использовать в c++ cli?
Вероника99 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перевести CString в double? JuniorProger Visual C++ 3 12.03.2012 02:20
Преобразование double в string Misha-QWERTY Visual C++ 4 17.04.2011 15:00
String to double ? NiCola999 Общие вопросы C/C++ 3 14.03.2010 12:21
Перевод String в Double mauseO Помощь студентам 2 29.01.2010 15:29