Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
virtuos553
48 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
#1

Запись информации из вектора типа string в вектор типа double - C++

10.06.2014, 18:07. Просмотров 546. Ответов 6
Метки нет (Все метки)

Как записать только числа , которые хранятся в векторе типа стринг, в вектор типа дабл, в векторе типа стринг есть как буквы так и числа , мне нужно как-то вытащить от туда только числа, не подскажите как это сделать?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2014, 18:07     Запись информации из вектора типа string в вектор типа double
Посмотрите здесь:

Сравнение переменной типа double c подстрокой из вектора - C++
Здравствуйте! Я с помощью getline считываю из файла текст. Файл в определенном формате. Кладу его построчно в vector<string> name. ...

Аргумент типа double несовместим с параметром типа double* - C++
Функция function должна возвращать количество элементов массива, значение которые превышает значение средне арифметического элементов...

Аргумент типа double несовместим с параметром типа double - C++
#include <iostream> #include <cmath> #include <math.h> using namespace std; #define c 40 #define n 5 double po(double...

вектор типа string - C++
Привет! Пожскажите пожалуйста как в векторе типа string определить размер каждого входящего в него слова. Это как- то через опе6ратор...

Удаление [i][j] элемента из вектора типа string - C++
Добрый вечер! Пишу курсовую на тему "Консольный текстовый редактор". На деле же я считываю построчно из файла в вектор типа string. Одна...

Вывод вектора типа vector<string> - C++
Имеется следующий код, который разделяет строку на отдельные слова и помещает их в вектор, возникла проблема с выводом вектора, подскажите...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
10.06.2014, 18:35     Запись информации из вектора типа string в вектор типа double #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<vector>
#include<string>
#include<iostream>
#include<sstream>
 
int main()
{
  std::vector<double> out;
  std::vector<std::string> in;
  in.push_back("10.2");
  in.push_back("foo");
  in.push_back("bar");
  in.push_back("11.2");
  in.push_back("12.2");
  in.push_back("end");
  for(unsigned pos=0;pos<in.size();pos++)
  {
    std::stringstream conv(in[pos]);
    double out_dbl = 0.0;
    conv>>out_dbl;
    if(conv)
      out.push_back(out_dbl);
  }
  for(unsigned pos=0;pos<out.size();pos++)
  {
    std::cout<<out[pos]<<std::endl;
  }
  return 0;
}
virtuos553
48 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
10.06.2014, 18:40  [ТС]     Запись информации из вектора типа string в вектор типа double #3
вот как раз наткнулся на stringstream, можно пожалуйста с комментами?

Добавлено через 2 минуты
Тут впринципе все понятно, кроме вот этой строки if(conv)

Добавлено через 26 секунд
Тут впринципе все понятно, кроме вот этой строки if(conv)
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
10.06.2014, 18:43     Запись информации из вектора типа string в вектор типа double #4
Я бы так переводил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <string>
#include <algorithm>
 
int main()
{
   std::string str{"text172.3text4text5 text 67 text"};
   std::string number;
   std::copy_if(str.begin(), str.end(), std::back_inserter(number),
                [](char ch) { return ::isdigit(ch) || ch == '.';} );
   //std::cout << number;
   if (std::count(number.begin(), number.end(), '.') <= 1)
   {
      long double dvalue;
      try {
         dvalue = std::stold(number);
         std::cout << "\nSuccessfully. -> " << std::fixed << dvalue << "\n";
      }
      catch (std::invalid_argument& e) {std::cerr << "invalid_argument\n";}
      catch (std::out_of_range& e) {std::cerr << "out_of_range\n";}
   }
   else
      std::cout << "\nUnsuccessfully\n";
 
   return 0;
}
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
10.06.2014, 18:52     Запись информации из вектора типа string в вектор типа double #5
Цитата Сообщение от virtuos553 Посмотреть сообщение
можно пожалуйста с комментами?
в цикле инициализируем его буфер содержим очередной строки и пытаемся получить оттуда дабл.
если преобразование успешно - добавляем в результирующий вектор.

Добавлено через 8 минут
Цитата Сообщение от virtuos553 Посмотреть сообщение
Тут впринципе все понятно, кроме вот этой строки if(conv)
А, сорри. У потока есть перегруженный оператор bool(), в котором проверяются несколько флагов состояния. Когда последняя операция завершилась успешно, он возвращает true.
virtuos553
48 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
10.06.2014, 19:27  [ТС]     Запись информации из вектора типа string в вектор типа double #6
А по какому критерию он переводит в дабл? просто вот в это строке, он нашел мне числа 1 17 1,хотя впринципе не должен был

"!120-180Hz_1.5V_ Analysis data universal file, Test.Lab project "GVT_W100AR12N" 01-06-2014 17:23:46 MODE NO. 1, FREQUENCY"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2014, 19:47     Запись информации из вектора типа string в вектор типа double
Еще ссылки по теме:

Как разбить вектор на части(то есть вектора того же типа) - C++
Как разбить вектор на части(то есть вектора того же типа), чтобы было по 8 элементов в каждом vector&lt;bool&gt; fg;//вот его надо...

Запись переменной типа double в бинарный файл - C++
Помогите справится с проблемой! допустим а меня есть переменная: double d=0.123456789; (8байт) задача состоит в том чтобы записать...

Как правильно число в ячейке типа string, перекинуть в ячейку в тип double ? - C++
Cуть вопроса описанна в теме. Может не правильно объяснил, но всё же, вот пример: #include &lt;iostream&gt; #include &lt;string&gt; ...

В массив типа double записываю целые числа (типа int), но ошибка не вылазиет! - C++
Вот программулька: #include &lt;iostream&gt; using namespace std; #include &lt;conio.h&gt; int main() { double arr={1,2,3,4,5}; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
10.06.2014, 19:47     Запись информации из вектора типа string в вектор типа double #7
Видимо по тем же правилам, что и atof

http://www.cplusplus.com/reference/cstdlib/atof/
Yandex
Объявления
10.06.2014, 19:47     Запись информации из вектора типа string в вектор типа double
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru