2014-01-21 3 views
2

Это мой первый пост на SO, мой первый месяц программирования, и я изучаю сам, поэтому, пожалуйста, будь милым :) Вот так!right-align getline() input in C++

В двух словах, я ищу, чтобы иметь выровненный по правому краю ввод суммы валюты. Я использую getline(), между прочим, чтобы я мог проверить ввод. Может ли кто-нибудь помочь? Благодаря!!

Обоснование, детали:

Иногда это:

 
    $ 12345.67 
    $  45.30 
    $  1.01 

легче читать, чем:

 
    $ 12345.67 
    $ 45.30 
    $ 1.01 

Я думаю, что я понял, как это сделать, когда выводя:

cout << setfill(' ') << setw(40) << right << "Dr., SUBTOTAL:"; 
cout << " $"; 
cout << setw(10) << right << sum << endl; 

Которая выглядит так:

       Dr., SUBTOTAL $  12.34
или
       Dr., SUBTOTAL $ 1234.56
Отлично! (Я думаю.)

Но когда пользователь запрашивает ввод сумму в долларах, я не могу понять, как заставить ее вести себя как калькулятор, то есть выравнивать по правому краю любые цифры введенный таким образом. «Анимация остановки движения» для ввода 123.45 будет выглядеть так:

 
    Dr. Cash.......$  1 
    Dr. Cash.......$ 12 
    Dr. Cash.......$ 12. 
    Dr. Cash.......$ 12.3 
    Dr. Cash.......$ 12.34
Надеюсь, что это имело смысл.

UPDATE: Запуск Windows, Code :: Blocks 13,12, GNU GCC, 11

C++
+0

Вы не можете изменить ввод интерактивно в чистом стандартном C++; вам понадобится внешняя, специфичная для операционной системы библиотека. В Linux рассмотрим [GNU readline] (http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html) или [ncurses] (http://www.gnu.org/software/ncurses/) –

+0

Оба GNU 'readline' и' ncurses' были перенесены в Windows. –

+0

Спасибо, Базиль! –

ответ

2

Вы не можете сделать это строго соиЬ/CIN и GetLine. Вам нужно что-то вроде библиотеки curses http://en.wikipedia.org/wiki/Curses_(programming_library), и вам нужно убрать каждую клавишу отдельно и перерисовать линию.

+0

Спасибо! Раньше я не слышал про проклятия - ну, не так. –