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

Разбить строку(с числами) и записать в массив - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
skybidy
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 31
13.01.2013, 23:36     Разбить строку(с числами) и записать в массив #1
Здраствуйте!
У меня есть стринг line например "0.1 0.2 0.3 0.4"
И мне нужно записать эти числа в массив

Я понимаю, что это если не пробел, то записывать можно в другую строку и потом конвентировать в double

Но у меня не совсем получается(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
14.01.2013, 00:49     Разбить строку(с числами) и записать в массив #2
А только даубл может быть?
skybidy
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 31
14.01.2013, 00:51  [ТС]     Разбить строку(с числами) и записать в массив #3
Цитата Сообщение от Wolkodav Посмотреть сообщение
А только даубл может быть?
могут быть любые числа

в смысле только числа
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
14.01.2013, 21:43     Разбить строку(с числами) и записать в массив #4
Если разделитель только пробел, то используй std::stringstream

Добавлено через 8 минут
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
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>
 
#include <windows.h>
 
using namespace std;
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
string s="0.1 0.2 0.3 0.4";
stringstream ss(s);
 
vector<double>  vd;
 
copy( istream_iterator<double>(ss),
            istream_iterator<double>(),  back_inserter(vd) );
// Вывод
copy(vd.begin(),vd.end(),ostream_iterator<double>(cout,"\n") ) ;
 
system("pause");
return 0;
}
//---------------------------------------------------------------------------
Если использовать boost, то можно как-то так

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
38
#include <windows.h>
#include <iostream>
#include <vector>
#include <string>
 
#include <boost/spirit/core.hpp>
#include <boost/spirit/actor/push_back_actor.hpp>
 
#include <boost/foreach.hpp> //  чисто для удобства вывода...
#define foreach BOOST_FOREACH
//--------------------------------------------------
bool parse_digs(const char* str,std::vector<double>& v)
{
    using namespace boost::spirit;
 
    return parse(
                 str,
                 *real_p[push_back_a(v)],
                 space_p
        ).full ;
}
//--------------------------------------------------
int main()
{
    std::vector<double> vd;
 
    std::string s="0.1 0.2 0.3 0.4";
 
    std::cout<<"successful "<<std::boolalpha<< parse_digs(s.c_str(),vd) <<std::endl;
 
    // Вывод :
    foreach(const double& d,vd) std::cout<<d<<"\t";
    std::cout<<std::endl;
 
    system("pause");
    return 0;
}
//--------------------------------------------------
Yandex
Объявления
14.01.2013, 21:43     Разбить строку(с числами) и записать в массив
Ответ Создать тему
Опции темы

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