2015-10-21 2 views
1

Я относительно новичок в C++ и хотел бы преобразовать символьные строки чисел в вектор удвоений. Эти строки будут иметь разную длину, но их длины всегда будут известны. Например:C++: преобразовать строку в вектор <double>

У меня есть строка char* под названием «myValue», которая выглядит так: "0.5 0.4 1 5" и имеет известную длину, length=4.

Я хотел бы преобразовать эту строку в вектор двойников, как это:

vector<double> Param и дать мне следующий вывод:

Param[0]=0.5, Param[1]=0.4, Param[2]=1, Param[3]=5 

ответ

3

Вы можете сделать это с помощью std::stringstream. Мы сохраним строку в stringstream, а затем извлечем из нее double частей с петлей while.

std::stringstream ss; 
std::vector<double> data; 
char numbers[] = "0.5 0.4 1 5"; 
ss << numbers; 
double number; 
while (ss >> number) 
    data.push_back(number); 

Live Example

Поскольку мы используем стандартный контейнер, я предложил бы использовать std::string вместо char [] и тогда мы могли бы изменить

char numbers[] = "0.5 0.4 1 5"; 

Для

std::string numbers = "0.5 0.4 1 5"; 
+0

Вы можете просто написать 'std :: stingstream ss (" 0.5 0.4 5 ")' – Petr