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

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

Войти
Регистрация
Восстановить пароль
 
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
#1

Перевод дабла из строки - C++

06.12.2013, 17:08. Просмотров 353. Ответов 10
Метки нет (Все метки)

Всем привет. Есть проблема - нужно из строки, начиная с позиции l, вытянуть число с плавающей точкой, при этом нужно узнать, сколько символов из этой строки перевелось.
Например, строка: А234B.02 и l = 6, то должно получиться число "0.02" и его длина 3.
Как осуществить это и обойтись без самостоятельного посимвольного вытягивания?

UPD
Длина числа - кол-во символов, которые мы вытянули из строки.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2013, 17:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевод дабла из строки (C++):

Перевод строки - C++
Уважаемые программисты,подкиньте рабочий код что бы вместо точки с запятой можно было передать перевод строки,после чего выполнялась бы...

перевод строки - C++
возник вопрос,который я считал простым,а сейчас не могу решить. вообщем так,нужно чтобы после запроса ввода,вывод был на той же строке ...

Строки. перевод - C++
Привет всем. такое вот задание есть В строке найти все числа в десятичной системе счисления, сформировать новую строку, в которой...

перевод строки CHAR - C++
Добрый день уважаемые форумчане) Пишу в IARе под AVR столкнулся с проблеммой вычесть из строки лишние символы. к примеру приведу такой код...

Перевод строки в число - C++
Помогите пожалуйста. Требуется перевести строку типа string в число типа long double. К примеру string str = "1111.11" long double...

Перевод строки в число - C++
Задание состоит в том, что нужно строку перевести в математическое выражение. Начальными данными есть строка, которая имее...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vyus
1 / 1 / 0
Регистрация: 07.11.2013
Сообщений: 15
06.12.2013, 17:09 #2
Всем привет. Есть проблема - нужно из строки, начиная с позиции l, вытянуть число с плавающей точкой, при этом нужно узнать, сколько символов из этой строки перевелось.
Например, строка: А234B.02 и l = 6, то должно получиться число "0.02" и его длина 3.
Как осуществить это?
Кодом

Думаю тебе следует поднять справочники в которых есть команды работы со строками. Если мне не изменяет память, то С++ работает со строкой как с массивом. Просто вытащи нужные символы в новую строку. Подключи библиотеку (я не помню ее название) для преобразования типов. В принципе все.
Если интересно, то можешь сделать преобразование сам - через цикл и посимвольного сравнения, но это велосипед - так что решай сам.
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
06.12.2013, 17:13  [ТС] #3
Цитата Сообщение от Vyus Посмотреть сообщение
Если интересно, то можешь сделать преобразование сам - через цикл и посимвольного сравнения, но это велосипед - так что решай сам.
Что-то не очень тянет загромождать код разборами даблов, т.к. такие числа нужно все прописать:
12
0.2
.0001
1,1232e20
1e20
1,333e-20

Добавлено через 2 минуты
Цитата Сообщение от Vyus Посмотреть сообщение
Просто вытащи нужные символы в новую строку.
Как будто это не ясно. Только вот еще узнать - какие символы нужные, а прописав все варианты - ошибиться как нефиг
Vyus
1 / 1 / 0
Регистрация: 07.11.2013
Сообщений: 15
06.12.2013, 17:16 #4
Цитата Сообщение от Dani Посмотреть сообщение
Что-то не очень тянет загромождать код разборами даблов, т.к. такие числа нужно все прописать:
12
0.2
.0001
1,1232e20
1e20
1,333e-20

Добавлено через 2 минуты

Как будто это не ясно. Только вот еще узнать - какие символы нужные, а прописав все варианты - ошибиться как нефиг
Я тебя ни к чему не призываю. Подключи библиотеку и следи что бы строка подходила по формату (то есть библиотечная функция могла сделать преобразование).
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
06.12.2013, 17:22  [ТС] #5
Vyus, а как узнать, сколько символов перевелось?

Добавлено через 45 секунд
Например, если я в stringstream запилил строку - вытащить дабл от туда просто, но как узнать какой длины вытянулось число?
Vyus
1 / 1 / 0
Регистрация: 07.11.2013
Сообщений: 15
06.12.2013, 17:24 #6
Vyus, а как узнать, сколько символов перевелось?
Если ты формируешь новую строку - узнать длину строки (но это учетом знаков препинания).
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
06.12.2013, 17:27  [ТС] #7
Vyus, как я ее сформирую тогда?
stima
463 / 312 / 26
Регистрация: 22.03.2011
Сообщений: 1,021
Завершенные тесты: 2
06.12.2013, 17:28 #8
Такое только ручками почарово или регулярками.
Vyus
1 / 1 / 0
Регистрация: 07.11.2013
Сообщений: 15
06.12.2013, 17:33 #9
Vyus, как я ее сформирую тогда?
Я уже не помню С++, но там есть функция выделения подстроки из исходной, но в твоем случае я как понимаю такой способ не подходит. Просто читай исходную строку посимвольно, сделай маску по которой будешь определять вещественные числа и копируй в новую строку.

Добавлено через 1 минуту
Такое только ручками почарово или регулярками.
Полностью согласен.
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
07.12.2013, 12:43  [ТС] #10
В общем, я придумал красивое решение проблемы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
#include <sstream>
 
int main()
{
    std::stringstream ss;
    std::string s;
    std::cin >> s;
    ss << s;
 
    double d;
    ss >> d;
    unsigned unextracted = 0;
    while(!ss.eof())
    {
        ss.get();
        ++unextracted;
    }
 
    std::cout << d << ' ' << s.length() - unextracted << std::endl;
    return 0;
}
strannic33
0 / 0 / 0
Регистрация: 23.11.2013
Сообщений: 8
10.12.2013, 10:14 #11
Спасибо, мне это тоже пригодилось)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2013, 10:14
Привет! Вот еще темы с ответами:

Перевод из строки в число - C++
Снова я =) Работаю над калькулятором. С функцией ввода разобрался. Значит есть строка ввода. рабочая. заполняет массив buf . Потом...

Перевод из строки в число - C++
Подскажите в чем ошибка. Метод должен принимать строку в виде $456 654 456.36 и выдавать число типа double. double bMoney::getmoney() ...

Перевод строки в число - C++
У меня по заданию нужно в строку ввести числа через пробелы а потом убрать пробелы и перевести из строки в число мои цифры. #include...

Перевод из строки в число - C++
Каким способом можно перевести строчку типа &quot;System::String ^&quot; в тип double?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.12.2013, 10:14
Ответ Создать тему
Опции темы

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