2012-04-03 3 views
1

Как бы вы преобразовали строку, скажем: string Numbers = "0.3 5.7 9.8 6.2 0.54 6.3"; в массив с плавающей точкой, такой как: float Numbers[6] = {0.3, 5.7, 9.8, 6.2, 0.54, 6.3};?Как преобразовать строку в массив поплавков?

+0

Я сделал некоторые поиски и, казалось, указывали на strtok, но и другие поиски, казалось, говорил вам потребуется более пользовательскую функцию. Возможно, вы можете найти лучший ответ на Google, чем я, если кто-то еще не ответит здесь. – TecBrat

+0

Да, это была моя идея. Я планировал использовать 'strtok()', чтобы разбить его на отдельные строки, а затем использовать 'atof()' для преобразования строк в floats (помните, что я начинающий программист). У меня возникали проблемы вверх по строке. – Sean

ответ

11

Я хотел бы использовать структуры данных и алгоритмы из std:::

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

int main() { 
    std::string Numbers = "0.3 5.7 9.8 6.2 0.54 6.3"; 

    // If possible, always prefer std::vector to naked array 
    std::vector<float> v; 

    // Build an istream that holds the input string 
    std::istringstream iss(Numbers); 

    // Iterate over the istream, using >> to grab floats 
    // and push_back to store them in the vector 
    std::copy(std::istream_iterator<float>(iss), 
     std::istream_iterator<float>(), 
     std::back_inserter(v)); 

    // Put the result on standard out 
    std::copy(v.begin(), v.end(), 
     std::ostream_iterator<float>(std::cout, ", ")); 
    std::cout << "\n"; 
} 
+0

Любая конкретная причина, по которой вы не использовали 'using namespace std'? – Sean

+2

Да. Добавить 'using namespace std' может ввести ошибки. Опишите описание проблемы здесь: http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-a-bad-practice-in-c –

+2

@Sean: прочитайте ответ [ здесь] (http://stackoverflow.com/questions/1265039/using-std-namespace) с наибольшим количеством опросов (я рекомендую никогда не использовать его). –

Смежные вопросы