49 / 4 / 0
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
1

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

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

Как записать только числа , которые хранятся в векторе типа стринг, в вектор типа дабл, в векторе типа стринг есть как буквы так и числа , мне нужно как-то вытащить от туда только числа, не подскажите как это сделать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2014, 18:07
Ответы с готовыми решениями:

Создать класс вектор, содержащий элементы типа long double, размерность вектора
срочно!!!!!!!!!!! Пожалуйстаааа Задание 3. Создать класс вектор, содержащий элементы типа long...

Функция, которая принимает аргумент типа String и возвращает результат типа Double
Написать функцию, которая принимает аргумент типа String, и возвращает результат типа Double,...

Сравнение массива типа string с числом типа double
Добрый день! Проблема заключается в том,что нужно найти индекс максимального размера галактики....

Как сгенерировать случайное число типа я double имея на входе 2 числа типа double - минимальное и максимальное
Например: public class ExtendedRandom : Random { public ExtendedRandom() ...

6
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
10.06.2014, 18:35 2
Лучший ответ Сообщение было отмечено virtuos553 как решение

Решение

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;
}
1
49 / 4 / 0
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
10.06.2014, 18:40  [ТС] 3
вот как раз наткнулся на stringstream, можно пожалуйста с комментами?

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

Добавлено через 26 секунд
Тут впринципе все понятно, кроме вот этой строки if(conv)
0
1456 / 793 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
10.06.2014, 18:43 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;
}
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
10.06.2014, 18:52 5
Цитата Сообщение от virtuos553 Посмотреть сообщение
можно пожалуйста с комментами?
в цикле инициализируем его буфер содержим очередной строки и пытаемся получить оттуда дабл.
если преобразование успешно - добавляем в результирующий вектор.

Добавлено через 8 минут
Цитата Сообщение от virtuos553 Посмотреть сообщение
Тут впринципе все понятно, кроме вот этой строки if(conv)
А, сорри. У потока есть перегруженный оператор bool(), в котором проверяются несколько флагов состояния. Когда последняя операция завершилась успешно, он возвращает true.
1
49 / 4 / 0
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
10.06.2014, 19:27  [ТС] 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"
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
10.06.2014, 19:47 7
Видимо по тем же правилам, что и atof

http://www.cplusplus.com/reference/cstdlib/atof/
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2014, 19:47
Помогаю со студенческими работами здесь

Как конвертировать переменную типа Double в переменную типа String?
Как конвертировать переменную типа Double в переменную типа String. И наоборот.

Создать структуру включающую в себя константу типа double, закрытое поле типа double
Помогите пожалуйста с заданием, создать структуру включающую в себя константу типа double, закрытое...

Перевести строку типа string, в строку типа double
Помогите с кодом. Как строку типа стринг, например 123123.123123, перевести в тип double? Кода...

Сравнение переменной типа double c подстрокой из вектора
Здравствуйте! Я с помощью getline считываю из файла текст. Файл в определенном формате. Кладу...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru