LINUX.ORG.RU

C++: считывание из строки данных в массив


0

0

Здравствуйте.

Сабж в С делается таким образом:

char s[] = "1 2 3 4 5";
double x[5];
sscanf(s, "%lf %lf %lf %lf %lf", &x[0], &x[1], &x[2], &x[3], &x[4]);

Как это сделать "покрасивше" и средствами C++? Пусть вместо char[] s, будет string s, а вместо x[] - valarray<double> x, и нужно этот x заполнить. Размер x заранее указывать тоже не хочется ;)

Спасибо!


#include <sstream>
#include <string>
#include <iostream>
#include <vector>
#include <iterator>

int main(int argc, char* argv[])
{
    std::string input("0 1 2 3 4 5 6");
    std::istringstream in(input);
    
    std::vector<double> v;
    std::copy(std::istream_iterator<double>(in), std::istream_iterator<double>(), std::back_inserter(v));
        
    for (size_t i = 0; i < v.size(); ++i)
    {
        std::cout << v[i] << "\n";
    }
            
    return 0;
}

anonymous
()
Ответ на: комментарий от anonymous

то же самое, но немного короче:
    std::istream_iterator<double> it1(in), it2;
    std::vector<double> v(it1, it2);
    std::copy (v.begin (), v.end (), std::ostream_iterator<double>(std::cout," ")); std::cout<<std::endl; 

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.