Форум программистов, компьютерный форум 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!  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KIngston
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 11
14.05.2016, 22:22     Ввод-вывод: Не могу ввести строку в std::string! #21
Благодарю

Добавлено через 2 часа 54 минуты
Прошу помощи, ибо не могу исправить свои ошибки. Лазил в интернете до ночи — ответа не нашел. Поэтому оставлю здесь свой коммент — может кто подскажет. Пытаюсь создать динамическую переменную string и в процессе цикла while удалять ее пока она не примет нужное значение. Заранее спасибо.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <string>
using namespace std;
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cout << "Привет, я твой личный собеседник на ближайшие 40 секунд. Мое имя Компьютер" << endl;
    string *greeting = new string;
    cin >> greeting;
    if (greeting == "Привет" || greeting == "Здравствуйте" || greeting == "Приветствую" || greeting == "привет" || greeting == "да" || greeting == "Да" || greeting == "здравствуйте" || greeting == "приветствую")
        cout << "Как Вас зовут?" << endl;
    else
        while (greeting == "Привет" || greeting == "Здравствуйте" || greeting == "Приветствую" || greeting == "привет" || greeting == "да" || greeting == "Да" || greeting == "здравствуйте" || greeting == "приветствую");
        {
            cout << "Давайте начнем с приветствия" << endl;
            cin >> greeting;
        }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6166 / 2895 / 282
Регистрация: 04.12.2011
Сообщений: 7,697
Записей в блоге: 3
15.05.2016, 01:51     Ввод-вывод: Не могу ввести строку в std::string! #22
KIngston, тут не нужна такая переменная. Достаточно создать её на стеке. И ещё. 16-я строка точкой с запятой не по делу заканчивается.
А в принципе для организации диалога лучше меню с выбором вариантов)
KIngston
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 11
15.05.2016, 06:57     Ввод-вывод: Не могу ввести строку в std::string! #23
Исправь пожалуйста, а то я не понял как сделать то, что ты сказал. Меню также будет добавлено позже.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6166 / 2895 / 282
Регистрация: 04.12.2011
Сообщений: 7,697
Записей в блоге: 3
15.05.2016, 09:38     Ввод-вывод: Не могу ввести строку в std::string! #24
Цитата Сообщение от KIngston Посмотреть сообщение
Исправь пожалуйста, а то я не понял как сделать то, что ты сказал.
C++
1
2
//string *greeting = new string;
string greeting;
что касается остального, то непонятно как должна вести себя программа (заявка на искусственный интеллект).
Например блок if else if
где последний if представлен в виде while это довольно интересное решение, но одинаковость условия if и while сбивает с толку.
Если Вы только начинаете, попробуйте без сравнений строк обойтись. Чтобы тестировать подобный код их потом придётся вводить. Пока должно быть достаточно целых переменных.
Например напишите массив строк:
string greatings[]={"Hi", "Привет", "Yes", "Да", "No", "Нет"};
а лучше -один английский, а другой русский.
И попробуйте организовать диалог на языке собеседника. Только не усложняйте поведение. Строковые переменные и возможная логика ведут к задачам экспертных систем. Попробуйте что-то попроще.
Но придумайте сами. Иначе не интересно.
зы сейчас заметил, что Вы задали вопрос в чужой теме. Начните свою. Придумайте хорошее название. Профит: Поняв как выразить кратко, то что Вы хотите сделать Вы наполовину уже решите вопрос.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2016, 19:56     Ввод-вывод: Не могу ввести строку в 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

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

Или воспользуйтесь поиском по форуму:
KIngston
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 11
15.05.2016, 19:56     Ввод-вывод: Не могу ввести строку в std::string! #25
Окей, знаешь, спасибо. Это реально тяжеловато пока что для меня. Думаю Я пока что оставлю этот проект, и возобновлю его позже, когда научусь оперировать файлами и графическим интерфейсом. Кстати, цель создания этой программы была скомбинировать все полученные знания на С++ в одну программу. Сначала я думал что по мере обучения я буду постепенно добавлять новые строки из различных разделов, но оказалось что все это между собой ужасно конфликтует, а чтобы поисправлять все это надо знать много терминов, которые приобретаются в процессе обучения. Я думаю что ты прав, стоит отложить этот проект. Позже, я создам по этому тему(ибо проблемы будут, и мне одинаково будет нужна помощь таких гуру как ты). можешь проследить за этим, добавившись в друзья.
Yandex
Объявления
15.05.2016, 19:56     Ввод-вывод: Не могу ввести строку в std::string!
Ответ Создать тему
Опции темы

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