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

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

Войти
Регистрация
Восстановить пароль
 
Vladimir_N-sk
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 4
#1

Как увеличить ширину (разрядность) оператора >> ? - C++

29.06.2015, 10:29. Просмотров 227. Ответов 6
Метки нет (Все метки)

Для преобразования типов используется такая конструкция

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
30
31
32
33
34
35
36
#include <string.h>
#include <cstring>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <sstream>
#include <iomanip>
 
 
int main(int argc, char **argv)
{
 
 using namespace std;
 
 std::stringstream s;
 std::stringstream ss;
 std::stringstream sss;
 
    s <<  "12.123456";
    ss <<  "12345.123";
    sss <<  "123456.123";
 
 
    double k, l, m;
    
    s >> l;
    ss >> k;
    sss >> m;
    
    std::cout << "s:"<< s.str() << "  l:"<< l <<std::endl;
    std::cout << " ss:"<< ss.str() << "  k:"<< k <<std::endl;
    std::cout << " sss:"<<sss.str()<< " m:" << m << std::endl;
 
    
    return 0;
}
в результате имею вывод

s:12.123456 l:12.1235
ss:12345.123 k:12345.1
sss:123456.123 m:123456


т.е. в переменные типа double попадает только 6 разрядов (цифр) из строковых переменных, а надо чтобы все попадали.
Где это устанавливается?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2015, 10:29     Как увеличить ширину (разрядность) оператора >> ?
Посмотрите здесь:

C++ Как можно посчитать ширину дерева?
C++ сочетания оператора цикла и условного оператора
C++ Как установить ширину выпадающей части ComboBox?
Сочетания оператора цикла и условного оператора C++
Символьные функции: Преобразовать массив так: стаж работы увеличить на год, если он станет равен 10, то зарплату увеличить в 2 раза, если 15 – в 3 раз C++
C++ Сравнить два целых числа, не используя условного оператора, оператора выбора и так же символов сравнения
C++ Алгоритмы поиска кратчайших путей в ширину и двунаправленный в ширину
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max Dark
В поиске работы
 Аватар для Max Dark
1548 / 1401 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
29.06.2015, 11:10     Как увеличить ширину (разрядность) оператора >> ? #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <iomanip>
#include <ios>
 
using namespace std;
 
int main() {
    double x = 12345.67890;
    std::cout << std::setprecision(15);
    std::cout << x << std::endl;
    std::cout << std::fixed;
    std::cout << x << std::endl;
    return 0;
}
std::setprecision
std::fixed
Vladimir_N-sk
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 4
29.06.2015, 11:24  [ТС]     Как увеличить ширину (разрядность) оператора >> ? #3
Цитата Сообщение от Cra3y Посмотреть сообщение
std::setprecision
std::fixed
Это прекрасно, только эти модификаторы работают для << (cout) и не работают для cin (>>).
К тому же, как я понял, std::setprecision устанавливает кол-во знаков после запятой, а это не совсем то что нужно по условию.
nmcf
4463 / 3801 / 1286
Регистрация: 14.04.2014
Сообщений: 14,933
29.06.2015, 13:18     Как увеличить ширину (разрядность) оператора >> ? #4
Причём тут cin? Сколько введёшь столько и будет, если поместится.
Цитата Сообщение от Vladimir_N-sk Посмотреть сообщение
std::setprecision устанавливает кол-во знаков после запятой
А что нужно-то? Пример.
Vladimir_N-sk
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 4
29.06.2015, 13:27  [ТС]     Как увеличить ширину (разрядность) оператора >> ? #5
Цитата Сообщение от nmcf Посмотреть сообщение
Причём тут cin? Сколько введёшь столько и будет, если поместится.

А что нужно-то? Пример.
Цитата Сообщение от nmcf Посмотреть сообщение
Причём тут cin? Сколько введёшь столько и будет, если поместится.
Цитата Сообщение от Vladimir_N-sk Посмотреть сообщение
std::setprecision устанавливает кол-во знаков после запятой
А что нужно-то? Пример.
Пример есть в 1-м сообщении.
Нужно чтобы был вывод

s:12.123456 l:12.123456
ss:12345.123 k:12345.123
sss:123456.123 m:123456.123

т.е. чтобы значений строковой переменной и перменной double совпадали!
nmcf
4463 / 3801 / 1286
Регистрация: 14.04.2014
Сообщений: 14,933
29.06.2015, 16:03     Как увеличить ширину (разрядность) оператора >> ? #6
Ну делай с setprecision(15), как Cra3y, показал.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2015, 16:25     Как увеличить ширину (разрядность) оператора >> ?
Еще ссылки по теме:

Увеличить размер выводимого текста (увеличить буквы) функции outtextxy C++
Придумайте простую программу с использованием условного оператора IF и оператора switch C++
Вызов прегруженного оператора вывода в поток из аналогичного оператора C++
C++ Неправильная работа оператора присваивания после работы оператора суммирования
C++ Избыточное копирование объекта при реализации оператора умножения и оператора присваивания

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

Или воспользуйтесь поиском по форуму:
Vladimir_N-sk
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 4
29.06.2015, 16:25  [ТС]     Как увеличить ширину (разрядность) оператора >> ? #7
Цитата Сообщение от nmcf Посмотреть сообщение
Ну делай с setprecision(15), как Cra3y, показал.
Ага, сработало. Чет я не так этот setprecision понимал.
Yandex
Объявления
29.06.2015, 16:25     Как увеличить ширину (разрядность) оператора >> ?
Ответ Создать тему
Опции темы

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