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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Revelador
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 22
#1

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

10.05.2014, 22:21. Просмотров 1309. Ответов 24
Метки нет (Все метки)

Ничего не понимаю! Должно работать:
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);
}
Что получилось на скрине.
0
Миниатюры
Ввод-вывод: Не могу ввести строку в std::string!  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2014, 22:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод-вывод: Не могу ввести строку в std::string! (C++):

Считать текст из файла в строку типа std::string (файловый ввод/вывод) - C++
Доброго всем здравия, непонимание работы с файлами побуждает меня беспокоить вас. Программа копирует с файла текст, и из-за абзацев текст...

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri - C++
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка error: cannot convert 'std::string {aka...

Где и почему используют ту или иную строку std::string, char[], System::String^ ? - C++
Где и почему используют ту или иную строку std::string, char, System::String^ ? Объясните пожалуйста где нужно использовать...

запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’ - C++
private: std::string firstName; }; std::string ClientData::getFirstName() const{ return firstName; } Дает в итоге...

Заменить в программе, переводящую строку в двоичный код, консольный ввод/вывод на файловый ввод/вывод - C++
Добрый день! Помогите, пожалуйста, с программой. Программа считывает строку с клавиатуры и переводит её в двоичный код. затем наоборот...

Как скопировать строку типа std::string в другую строку такого же типа? - C++
Хотел скопировать строку #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int _tmain(int...

24
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
10.05.2014, 22:34 #2
Почему getline без std?
0
Revelador
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 22
10.05.2014, 22:39  [ТС] #3
Почему getline без std?
Дописал, без изменений!
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
10.05.2014, 22:41 #4
Т. е. пропускает пятую строку? А состояние cin нормальное? Ошибок нет? Или символов в потоке.
0
Revelador
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 22
10.05.2014, 23:00  [ТС] #5
Цитата Сообщение от nmcf Посмотреть сообщение
Т. е. пропускает пятую строку? А состояние cin нормальное? Ошибок нет? Или символов в потоке.
Та нет, все тихо.
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
10.05.2014, 23:02 #6
Перед пятой строкой попробуй вставить std::cin.ignore(100);
0
Revelador
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 22
10.05.2014, 23:15  [ТС] #7
Теперь дальше title не идет.
0
Миниатюры
Ввод-вывод: Не могу ввести строку в std::string!  
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6486 / 3130 / 307
Регистрация: 04.12.2011
Сообщений: 8,644
Записей в блоге: 5
10.05.2014, 23:37 #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;
}
Очень полезная ф-ция. Она печатает всё подряд.
0
Миниатюры
Ввод-вывод: Не могу ввести строку в std::string!  
Revelador
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 22
11.05.2014, 00:21  [ТС] #9
Почему если использовать этот код в функции main, все работает, а если в функции члене то как у меня?
0
Bretbas
Каждому свое
299 / 98 / 26
Регистрация: 05.08.2013
Сообщений: 1,121
Завершенные тесты: 1
11.05.2014, 01:02 #10
Место getline используй ( cin>> title ).get () ;
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.05.2014, 01:21 #11
Цитата Сообщение от Revelador Посмотреть сообщение
Почему если использовать этот код в функции main, все работает, а если в функции члене то как у меня?
Для этого нужно видеть, как у вас код сделан.

Добавлено через 59 секунд
Цитата Сообщение от Bretbas Посмотреть сообщение
Место getline используй ( cin>> title ).get () ;
А если ему нужно не одно слово прочитать?
0
Bretbas
Каждому свое
299 / 98 / 26
Регистрация: 05.08.2013
Сообщений: 1,121
Завершенные тесты: 1
11.05.2014, 23:46 #12
alsav22, будет работать и с несколькими словами
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.05.2014, 23:56 #13
Цитата Сообщение от Bretbas Посмотреть сообщение
будет работать и с несколькими словами
Чудес в программировании не бывает. cin >> читает до пробельного символа.

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

Не по теме:

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

0
Bretbas
Каждому свое
299 / 98 / 26
Регистрация: 05.08.2013
Сообщений: 1,121
Завершенные тесты: 1
11.05.2014, 23:58 #14
alsav22, нет, нужно использовать ( cin>> title ).get () ;
у меня у самого такая же проблема была,мне нужно было записывать предложение из слов,разделенные пробелами.getline не помогало,у меня как будто пропускало эту строчку с кодом
начал использовать ( cin>> title ).get () ; и все зафачило
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.05.2014, 00:06 #15
Цитата Сообщение от Bretbas Посмотреть сообщение
у меня у самого такая же проблема была,мне нужно было записывать предложение из слов,разделенные пробелами.getline не помогало,у меня как будто пропускало эту строчку с кодом
Что там у вас было, и как, никому не известно кроме вас. Я вижу код ТС. Если у него есть пропуск ввода, то нужно сделать то, что написали ещё 6 посте, а не пытаться читать строку через cin >>.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2014, 00:06
Привет! Вот еще темы с ответами:

Найти вхождение одного символа std::string в строку char* - C++
Каким образом можно найти вхождение одного символа std::string в строку char*? Наоборот то понятное дело как, но нужно именно так

Ncurses | вывод на экран строки std::string - C++
Ребят, я чёт не могу разобраться. Собственно, надо в окно вывести строку, значение которой хранится в переменной типа std::string ...

Скопировать с конца строки std::string четыре символа в другую строку - C++
как функцией можно скопировать с конца строки 4 символа в другую? string a = &quot;123456&quot;; string b; результат: b =...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами - C++
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...


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

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

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