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

Ввод-вывод: Не могу ввести строку в std::string! - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Revelador
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 22
10.05.2014, 22:21     Ввод-вывод: Не могу ввести строку в std::string! #1
Ничего не понимаю! Должно работать:
C++
1
2
3
4
5
6
7
8
9
10
void Engine::CreateNewNote()
{
    std::cout << "Title: ";
    std::string title;
    getline(std::cin, title);
 
    std::cout << "Text: ";
    std::string text;
    getline(std::cin, text);
}
Что получилось на скрине.
Миниатюры
Ввод-вывод: Не могу ввести строку в std::string!  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4324 / 3745 / 1260
Регистрация: 14.04.2014
Сообщений: 14,688
10.05.2014, 22:34     Ввод-вывод: Не могу ввести строку в std::string! #2
Почему getline без std?
Revelador
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 22
10.05.2014, 22:39  [ТС]     Ввод-вывод: Не могу ввести строку в std::string! #3
Почему getline без std?
Дописал, без изменений!
nmcf
4324 / 3745 / 1260
Регистрация: 14.04.2014
Сообщений: 14,688
10.05.2014, 22:41     Ввод-вывод: Не могу ввести строку в std::string! #4
Т. е. пропускает пятую строку? А состояние cin нормальное? Ошибок нет? Или символов в потоке.
Revelador
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 22
10.05.2014, 23:00  [ТС]     Ввод-вывод: Не могу ввести строку в std::string! #5
Цитата Сообщение от nmcf Посмотреть сообщение
Т. е. пропускает пятую строку? А состояние cin нормальное? Ошибок нет? Или символов в потоке.
Та нет, все тихо.
nmcf
4324 / 3745 / 1260
Регистрация: 14.04.2014
Сообщений: 14,688
10.05.2014, 23:02     Ввод-вывод: Не могу ввести строку в std::string! #6
Перед пятой строкой попробуй вставить std::cin.ignore(100);
Revelador
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 22
10.05.2014, 23:15  [ТС]     Ввод-вывод: Не могу ввести строку в std::string! #7
Теперь дальше title не идет.
Миниатюры
Ввод-вывод: Не могу ввести строку в std::string!  
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6176 / 2905 / 284
Регистрация: 04.12.2011
Сообщений: 7,730
Записей в блоге: 3
10.05.2014, 23:37     Ввод-вывод: Не могу ввести строку в std::string! #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <string>
#include <iostream>
using namespace std;
void enter_and_print( ){
    cout << "Title: ";
    string title;
    getline(cin, title);
    
    cout << "Text: ";
    string text;
    getline(cin, text);
    cout<<endl<<title;
    cout<<text;
}
 
int main()
{
enter_and_print( );
cout << endl ;
system("pause") ;
return 0;
}
Очень полезная ф-ция. Она печатает всё подряд.
Миниатюры
Ввод-вывод: Не могу ввести строку в std::string!  
Revelador
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 22
11.05.2014, 00:21  [ТС]     Ввод-вывод: Не могу ввести строку в std::string! #9
Почему если использовать этот код в функции main, все работает, а если в функции члене то как у меня?
Bretbas
22 / 17 / 1
Регистрация: 05.08.2013
Сообщений: 468
Завершенные тесты: 1
11.05.2014, 01:02     Ввод-вывод: Не могу ввести строку в std::string! #10
Место getline используй ( cin>> title ).get () ;
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.05.2014, 01:21     Ввод-вывод: Не могу ввести строку в std::string! #11
Цитата Сообщение от Revelador Посмотреть сообщение
Почему если использовать этот код в функции main, все работает, а если в функции члене то как у меня?
Для этого нужно видеть, как у вас код сделан.

Добавлено через 59 секунд
Цитата Сообщение от Bretbas Посмотреть сообщение
Место getline используй ( cin>> title ).get () ;
А если ему нужно не одно слово прочитать?
Bretbas
22 / 17 / 1
Регистрация: 05.08.2013
Сообщений: 468
Завершенные тесты: 1
11.05.2014, 23:46     Ввод-вывод: Не могу ввести строку в std::string! #12
alsav22, будет работать и с несколькими словами
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.05.2014, 23:56     Ввод-вывод: Не могу ввести строку в std::string! #13
Цитата Сообщение от Bretbas Посмотреть сообщение
будет работать и с несколькими словами
Чудес в программировании не бывает. cin >> читает до пробельного символа.

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

Не по теме:

Bretbas, вы уже патернами проектирования занимаетесь, а даёте какие-то странные советы на форуме. То предлагаете использоавть бинарные методы чтения/записи при работе со string, то строки читать с помощью cin >>.

Bretbas
22 / 17 / 1
Регистрация: 05.08.2013
Сообщений: 468
Завершенные тесты: 1
11.05.2014, 23:58     Ввод-вывод: Не могу ввести строку в std::string! #14
alsav22, нет, нужно использовать ( cin>> title ).get () ;
у меня у самого такая же проблема была,мне нужно было записывать предложение из слов,разделенные пробелами.getline не помогало,у меня как будто пропускало эту строчку с кодом
начал использовать ( cin>> title ).get () ; и все зафачило
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.05.2014, 00:06     Ввод-вывод: Не могу ввести строку в std::string! #15
Цитата Сообщение от Bretbas Посмотреть сообщение
у меня у самого такая же проблема была,мне нужно было записывать предложение из слов,разделенные пробелами.getline не помогало,у меня как будто пропускало эту строчку с кодом
Что там у вас было, и как, никому не известно кроме вас. Я вижу код ТС. Если у него есть пропуск ввода, то нужно сделать то, что написали ещё 6 посте, а не пытаться читать строку через cin >>.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6176 / 2905 / 284
Регистрация: 04.12.2011
Сообщений: 7,730
Записей в блоге: 3
12.05.2014, 01:24     Ввод-вывод: Не могу ввести строку в std::string! #16
alsav22, а мне до сих пор непонятно куда и зачем она читается. В методе класса объявлены две локальные строковые переменные и они не используются даже для печати. Имена совпадают с полями класса? (экстрасенсорика). Бой с тенью (имхо).
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.05.2014, 01:32     Ввод-вывод: Не могу ввести строку в std::string! #17
Я об этом написал:
Цитата Сообщение от Revelador Посмотреть сообщение
Почему если использовать этот код в функции main, все работает, а если в функции члене то как у меня?
Цитата Сообщение от alsav22 Посмотреть сообщение
Для этого нужно видеть, как у вас код сделан.
KIngston
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 11
14.05.2016, 17:25     Ввод-вывод: Не могу ввести строку в std::string! #18
Исправьте мой код. Что не так - не понимаю. Обьясните после решения пожалуйста. Заранее спасибо.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << "Привет, я твой личный собеседник на ближайшие 40 секунд. Мое имя Компьютер" << endl;
    string greeting;
    cin >> greeting;
    if (greeting == "Привет" || greeting == "Здравствуйте")
        cout << "Как Вас зовут?" << endl;
    else
        cout << "Давайте начнем с приветствия" << endl;
    system ("pause");
    return 0;
}
nmcf
4324 / 3745 / 1260
Регистрация: 14.04.2014
Сообщений: 14,688
14.05.2016, 18:54     Ввод-вывод: Не могу ввести строку в std::string! #19
Кодировка не совпадает. Читай тему про русский язык в консоли.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2016, 18:58     Ввод-вывод: Не могу ввести строку в std::string!
Еще ссылки по теме:

C++ Как привести std::wstring к std::string?
C++ Error C2664: std::vector<_Ty>::push: невозможно преобразовать параметр 1 из 'double' в 'const std::string &'
C++ Std::string and std::wstring convert

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

Или воспользуйтесь поиском по форуму:
nd2
1063 / 802 / 270
Регистрация: 29.01.2016
Сообщений: 2,506
14.05.2016, 18:58     Ввод-вывод: Не могу ввести строку в std::string! #20
Цитата Сообщение от KIngston Посмотреть сообщение
Исправьте мой код.
C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  ...
}
В свойствах консоли выбрать шрифт: Lucida Console.
Yandex
Объявления
14.05.2016, 18:58     Ввод-вывод: Не могу ввести строку в std::string!
Ответ Создать тему
Опции темы

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