Читать строку как аргумент командной строки C ++ - PullRequest
0 голосов
/ 24 января 2012

Я хочу прочитать строку и разобрать ее в C ++, чтобы преобразовать ее в двойные числа из командной строки и получить каждое число в векторе

'1.1,2.3,3.4,4.6,5.8,6.9,7.8,8.0,9.9,10.11,11.67'

std::string tempInput;
tempInput = argv[1];
vector <double> example; 

std::vector< std::string > tokens;
while ( std::cin >> tempInput ) {
   example.push_back( <double>( tempInput )  );
}

Так что было бы самым простым способом сделать это /

1 Ответ

3 голосов
/ 24 января 2012

Замените все запятые пробелами:

std::string input = "1.1,2.3,3.4,4.6,5.8,6.9,7.8,8.0,9.9,10.11,11.67";

std::replace(input.begin(), input.end(), ',', ' ');

std::vector<double> result;
std::istringstream inputStream(input);

double value;
while (inputStream >> value)
    result.push_back(value);

inputStream >> std::ws;
if (!inputStream.eof())
    // Handle input error

Или вместо цикла while рассмотрите std::istream_iterator:

std::vector<double> result;
std::istringstream inputStream(input);

std::copy(std::istream_iterator<double>(inputStream),
          std::istream_iterator<double>(),
          std::back_inserter(result));
...