как преобразовать целую строку в массив (или вектор); - PullRequest
0 голосов
/ 08 марта 2019

У меня есть long double x,y, entry, который выводит эти числа;

вывод x: 5 1 1 2 2 3 3 4 5 5 5

числа в x выше представлены вертикально

это код здесь;

stringstream sa(line);
long double x,y,entry;
vector<float> xd, yd;
sa >> x >> y >> entry;
cout << x;
cout << " " << y;
cout << " " << /*"Entries: " <<*/setprecision(16)<< entry << endl;

1 Ответ

0 голосов
/ 09 марта 2019

На основе предоставленного вами фрагмента кода вы можете вывести ваш stringstream непосредственно в vector.

copy(istream_iterator<float>(sa), istream_iterator<float>(), back_inserter(xd));

copy из заголовка <algorithm> и istream_iterator из заголовка <iterator>.

В качестве альтернативы, вы можете создать свой xd вектор, используя:

Initializer-листы

xd = {x}; // or xd( {x} )

Это может работать для скалярных и массивных входов. Если вы построите vector<float> из long double, произойдет неявное сужающее преобразование. Вы должны получить предупреждение об этом от вашего компилятора.

Использование функций push_back или insert

Если x - скаляр:

xd.push_back(x);

Если x - массив:

xd.insert(xd.begin(), x, x + x_size);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...