Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Wanna be serious
563 / 465 / 183
Регистрация: 31.07.2013
Сообщений: 1,679
1

Не корректно принимаются значения string

01.05.2016, 15:53. Просмотров 825. Ответов 3
Метки нет (Все метки)


Доброго времени суток форумчане. Столкнулся с проблемой. Есть класс Apartment
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Apartment
{
private:
    int num_room, floor;
    double square;
    std::string address;
public:
    Apartment();
    virtual ~Apartment();
    friend std::istream & operator >> (std::istream & is, Apartment & t);
    friend bool operator == (Apartment & t1, Apartment & t2);
    friend std::ostream & operator << (std::ostream & os, Apartment & t);
 
    int get_num_room();
    int get_floor();
    double get_square();
    std::string get_address();
 
    bool input();
};


Есть метод input(), принимающий на ввод значения полей класса
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool Apartment::input()
{
    std::cout << "Введите количество комнат: ";
    std::cin >> num_room;
    std::cout << "Введите этаж квартиры: ";
    std::cin >> floor;
    std::cout << "Введите площадь квартиры: ";
    std::cin >> square;
    std::cout << "Введите адрес квартиры: ";
 
    std::getline(std::cin, address);
    return true;
}

Проблема заключается в том, что после ввода "Площади квартиры" (square), программа отказывается
принимать значение типа std::string, а просто пропускает его ввод и идёт дальше. При этом замечено, что
конструктором переменной address присваивается значение строки "Default", а после так называемого
"Ввода" значение строки становится пустым. Прошу помочь мне разобраться в чем же заключается проблема.

Заранее благодарен всем откликнувшимся!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2016, 15:53
Ответы с готовыми решениями:

При передаче данных через тсп винсокет принимаются не корректно
Здравствуйте. Я не давно начал программировать на visual basic 6.0. Еще много чего не знаю. Так что...

Аргументы контроллера типа String? не принимаются
Есть контроллер public ActionResult Create(string user, string? image) { ...

Битовый массив (значения принимаются битами, а адресация по номеру бита)
Реализовать только на языке C. Битовый массив (значения принимаются битами, а адресация по номеру...

Ключи отображает корректно, а значения нет (при новом товаре пропадают старые значения)
Добрый день! Имеется база для отпуска товаров с магазинного склада, учет товаров происходит по...

3
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
01.05.2016, 16:23 2
Лучший ответ Сообщение было отмечено Bespridelschic как решение

Решение

В 10 строку cin.ignore();
1
Wanna be serious
563 / 465 / 183
Регистрация: 31.07.2013
Сообщений: 1,679
01.05.2016, 16:27  [ТС] 3
Aymurat, спасибо вам огромное! Не могли бы вы подсказать, почему так случилось?
0
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
01.05.2016, 16:30 4
Bespridelschic, при нажатии на enter cin.getline() записывает к себе переход на новую строку, и получается Ваша строка состоит из "перехода" на новую строку.
А cin.ignore() в свою очередь удаляет из буфера тот самый переход
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2016, 16:30

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

В переменную 'string' корректно вписать UnicodeText
Есть переменная url : string; Есть текст:...

Корректно ли? string nonVowel = new char[str.size()];
При определение строки можно ли её инициализировать выделением памяти, что бы её потом...

Как преобразовать данные из Textbox в String корректно
Здравствуйте, пишу простенькую программу которая берет адрес сайта из textbox и по нажатию кнопки...

Не корректно отображается результат функции в формате string в консоли
Добрый день! Написали функцию сравнения строк, возвращает 0, если строки равны, возвращает 1,...


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

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

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