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

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

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

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

10.05.2014, 22:21. Просмотров 1391. Ответов 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
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,673
Записей в блоге: 5
12.05.2014, 01:24 #16
alsav22, а мне до сих пор непонятно куда и зачем она читается. В методе класса объявлены две локальные строковые переменные и они не используются даже для печати. Имена совпадают с полями класса? (экстрасенсорика). Бой с тенью (имхо).
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.05.2014, 01:32 #17
Я об этом написал:
Цитата Сообщение от Revelador Посмотреть сообщение
Почему если использовать этот код в функции main, все работает, а если в функции члене то как у меня?
Цитата Сообщение от alsav22 Посмотреть сообщение
Для этого нужно видеть, как у вас код сделан.
0
KIngston
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 11
14.05.2016, 17:25 #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;
}
0
nmcf
5547 / 4857 / 1647
Регистрация: 14.04.2014
Сообщений: 19,725
14.05.2016, 18:54 #19
Кодировка не совпадает. Читай тему про русский язык в консоли.
0
nd2
2394 / 1983 / 697
Регистрация: 29.01.2016
Сообщений: 6,450
14.05.2016, 18:58 #20
Цитата Сообщение от KIngston Посмотреть сообщение
Исправьте мой код.
C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  ...
}
В свойствах консоли выбрать шрифт: Lucida Console.
0
KIngston
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 11
14.05.2016, 22:22 #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;
        }
}
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,673
Записей в блоге: 5
15.05.2016, 01:51 #22
KIngston, тут не нужна такая переменная. Достаточно создать её на стеке. И ещё. 16-я строка точкой с запятой не по делу заканчивается.
А в принципе для организации диалога лучше меню с выбором вариантов)
1
KIngston
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 11
15.05.2016, 06:57 #23
Исправь пожалуйста, а то я не понял как сделать то, что ты сказал. Меню также будет добавлено позже.
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,673
Записей в блоге: 5
15.05.2016, 09:38 #24
Цитата Сообщение от KIngston Посмотреть сообщение
Исправь пожалуйста, а то я не понял как сделать то, что ты сказал.
C++
1
2
//string *greeting = new string;
string greeting;
что касается остального, то непонятно как должна вести себя программа (заявка на искусственный интеллект).
Например блок if else if
где последний if представлен в виде while это довольно интересное решение, но одинаковость условия if и while сбивает с толку.
Если Вы только начинаете, попробуйте без сравнений строк обойтись. Чтобы тестировать подобный код их потом придётся вводить. Пока должно быть достаточно целых переменных.
Например напишите массив строк:
string greatings[]={"Hi", "Привет", "Yes", "Да", "No", "Нет"};
а лучше -один английский, а другой русский.
И попробуйте организовать диалог на языке собеседника. Только не усложняйте поведение. Строковые переменные и возможная логика ведут к задачам экспертных систем. Попробуйте что-то попроще.
Но придумайте сами. Иначе не интересно.
зы сейчас заметил, что Вы задали вопрос в чужой теме. Начните свою. Придумайте хорошее название. Профит: Поняв как выразить кратко, то что Вы хотите сделать Вы наполовину уже решите вопрос.
0
KIngston
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 11
15.05.2016, 19:56 #25
Окей, знаешь, спасибо. Это реально тяжеловато пока что для меня. Думаю Я пока что оставлю этот проект, и возобновлю его позже, когда научусь оперировать файлами и графическим интерфейсом. Кстати, цель создания этой программы была скомбинировать все полученные знания на С++ в одну программу. Сначала я думал что по мере обучения я буду постепенно добавлять новые строки из различных разделов, но оказалось что все это между собой ужасно конфликтует, а чтобы поисправлять все это надо знать много терминов, которые приобретаются в процессе обучения. Я думаю что ты прав, стоит отложить этот проект. Позже, я создам по этому тему(ибо проблемы будут, и мне одинаково будет нужна помощь таких гуру как ты). можешь проследить за этим, добавившись в друзья.
0
15.05.2016, 19:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2016, 19:56
Привет! Вот еще темы с ответами:

Найти вхождение одного символа 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++
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...


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

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

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