Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перевод строки в массив double 
:(
    Опции темы
antoshka1303
Дата 22.6.2008, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 17.4.2008

Репутация: нет
Всего: нет



Всем привет! у меня вот такая задача.

Существует строка вида.
Код

0.232 0.64576 0.475

Нужно  считать эти цифры  в массив типа double, если заранее известно, сколько чисел в строке. То есть в данном случае размерность массива =3.
Всем заранее спасибо!!
PM MAIL   Вверх
rrrFer
Дата 22.6.2008, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



antoshka1303
вариатов много, например записать строку в файл, а потом считать со спецификатором %f
можно парсить строку имхо это сложнее
а еще можно использовать строковый поток streangstream и приведение типа reinterpret_cast

Это сообщение отредактировал(а) rrrFer - 22.6.2008, 20:02
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 22.6.2008, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



Цитата(antoshka1303 @  22.6.2008,  17:22 Найти цитируемый пост)
Существует строка вида.

Если формат строго такой то парсинг очень простой
Код

    LPCSTR str = "0.232 0.64576 0.475";
    int c = 1;

    for (int i = 0; str[i] != '\0'; i++)
    {
       if (str[i] == ' ') c++;
    }

    double *mas = new double[c];

    int p = 0, d = 0;

    for (int i = 0; str[i] != '\0'; i++)
    {
       if (str[i] == ' ')
       {
          mas[d] = atof(&str[p]);
          p = i + 1;
          d++;
       }
    }

    mas[d] = atof(&str[p]);



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
bsa
Дата 23.6.2008, 10:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



antoshka1303, если не ошибаюсь, у тебя С++:
Код
#include <vector> //нужно для std::vector
#include <sstream> //нужно для stringstream
#include <algorithm> //нужно для std::copy
#include <iterator>   //нужно для back_inserter, istream_iterator и ostream_iterator
#include <iostream> //нужно для cout

const char *someString = "0.1234 0.4567 0.9876";

int main()
{
    //создаем динамический массив вещественных чисел двойной точности
    std::vector<double> array;
    //создаем поток с числами (если чтение производится из файла,
    //то можно вместо него использовать файловый поток)
    std::stringstream source(someString);
    //читаем все числа из созданного потока и помещаем в массив
    std::copy(std::istream_iterator<double>(source), std::istream_iterator<double>(), std::back_inserter(array));
    //тут можно уже что-то делать с массивом, например, можно вывести в столбик:
    std::copy(array.begin(), array.end(), std::ostream_iterator<double>(std::cout, "\n"));
    return 0;
}
Преимущество данного метода по сравнению с предыдущим:
1. отсутствие необходимости следить за памятью (т.е. делать в нужных местах delete)
2. не привязывает к определенной платформе.
3. короче (если убрать комментарии)
4. наглядней

Это сообщение отредактировал(а) bsa - 23.6.2008, 10:30
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0618 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.