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

С++ не даёт ввести значение строки - C++

Восстановить пароль Регистрация
 
Люблмир
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 30
10.06.2016, 15:51     С++ не даёт ввести значение строки #1
Ошибка: Не могу ввести строку в программе.
Ошибка: вылетает программа.
"ConsoleApplication1.exe" (Win32). Загружено "C:\Windows\SysWOW64\ntdll.dll". Невозможно найти или открыть файл PDB.
"ConsoleApplication1.exe" (Win32). Загружено "C:\Windows\SysWOW64\kernel32.dll". Невозможно найти или открыть файл PDB.
"ConsoleApplication1.exe" (Win32). Загружено "C:\Windows\SysWOW64\KernelBase.dll". Невозможно найти или открыть файл PDB.
"ConsoleApplication1.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcp110d.dll". Символы загружены.
"ConsoleApplication1.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcr110d.dll". Символы загружены.
"ConsoleApplication1.exe" (Win32). Загружено "C:\Windows\SysWOW64\apphelp.dll". Невозможно найти или открыть файл PDB.
"ConsoleApplication1.exe" (Win32). Загружено "C:\Windows\SysWOW64\cmd.exe". Невозможно найти или открыть файл PDB.
"ConsoleApplication1.exe" (Win32). Выгружено "C:\Windows\SysWOW64\cmd.exe"
"ConsoleApplication1.exe" (Win32). Загружено "C:\Windows\SysWOW64\cmd.exe". Невозможно найти или открыть файл PDB.
"ConsoleApplication1.exe" (Win32). Выгружено "C:\Windows\SysWOW64\cmd.exe"
Программа "[4892] ConsoleApplication1.exe" завершилась с кодом 0 (0x0).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include<iostream>
#include<conio.h>
#include<string>
#include<fstream>
using namespace std;
 
string Name; string U;
int key; int key2;
 
inline void MainTheme()
{
    cout << "\t\t***Создай свой тест!***\n\n";
     cout << "1-> Начать создание теста\n";
      cout << "2-> Справка по созданию\n";
       cout << "3-> Выход\n";
}
 
inline void Reg()
{
    cout << "Введите имя пользователя : ";
     std::getline(std::cin, Name);
}
 
inline void Help()
{
    cout << "***********\n";
     cout << "**Справка**\n";
      cout << "***********\n";
       cout << " " << endl;
 
    cout << "Приветствую в программе, " << Name << "!\n";
     cout << "Это программа была изначально предназначена для создания тестов\n";
      cout << "Для дополнительной информации обратитесь к разработчикам. www.ijafsiusf.com\n";
}
 
void setKey()
{
    system("cls");
    cout << "Введите количество вопросов в тесте: ";
     cin >> key;
    system("cls");
}
void InputQ()
{
    string Q;
     cout << "Введите вопрос: ";
      std::getline(std::cin, Q);
     /* ofstream fout;
        fout.open("Test.txt", ios::app);
         fout << Q << endl;
          fout.close();*/
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
Reg();
MainTheme();
 
    char count = getch();
        switch(count)
        {
        case '1': 
            { 
                 break;
            }
        case '2': 
            { 
                Help();
                 break;
            }
        case '3': 
            { 
                return -1;
            }
        default: 
            {
            cout << "Ввод пункта меню не удался\n";
             system("pause");
              return -1;
            }
        }
 
        setKey();
        InputQ();
 
    _getch();
    return 0;
}
Добавлено через 1 минуту
P.S если убрать введение переменной key убрав процедуру setKey программа работает.
Прошу помощи
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UltraPenguin
222 / 88 / 22
Регистрация: 20.03.2014
Сообщений: 296
Завершенные тесты: 1
10.06.2016, 16:35     С++ не даёт ввести значение строки #2
Программа работает так как написана, не вылетает а штатно завершается.
Возможно вы получите что хотели заменив строку:
C++
1
std::getline(std::cin, Q);
на
C++
1
cin >> Q;
Люблмир
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 30
10.06.2016, 16:59  [ТС]     С++ не даёт ввести значение строки #3
Проблема в том что мне надо именно строка getline с учтением пробела
UltraPenguin
222 / 88 / 22
Регистрация: 20.03.2014
Сообщений: 296
Завершенные тесты: 1
10.06.2016, 17:07     С++ не даёт ввести значение строки #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Сделайте так:
C++
1
2
std::getline(std::cin, Q);
std::getline(std::cin, Q);
и будет вам счастье)
Люблмир
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 30
10.06.2016, 17:33  [ТС]     С++ не даёт ввести значение строки #5
Большое спасибо
А с чем это связано?
UltraPenguin
222 / 88 / 22
Регистрация: 20.03.2014
Сообщений: 296
Завершенные тесты: 1
10.06.2016, 17:36     С++ не даёт ввести значение строки #6
Если не изменяет память с интерпретацией ввода последнего предшествующего enter'a как ввода для текущей строки.
Люблмир
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 30
10.06.2016, 17:55  [ТС]     С++ не даёт ввести значение строки #7
Сложнаа
Спасибо

Добавлено через 7 минут
Есть ещё 1 вопрос:
У меня ввод в цикле прерывается. Первый раз я могу ввести вопрос и подпункты к нему, могу ввести второй вопрос, но к нему подпункты ввести не могу. Помогите пожалуйста.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void setKey()
{
    system("cls");
    cout << "Введите количество вопросов в тесте: ";
     cin >> key;
    system("cls");
}
void InputQ()
{
    
    cout << "Введите кол-во вариантов ответа для данного вопроса: ";
     cin >> key2;
 
      for(int i(0); i < key; i++)
      {
    string Q = "";
      cout << "Введите " << i+1 << " вопрос: ";
      std::getline(std::cin, Q);
      std::getline(std::cin, Q);
 
        for (int i(0); i < key2; i++)
        {
            cout << "Вариант ответа: ";
             std::getline(std::cin, U);
        }
      }
    
 
/*  ofstream fout;
        fout.open("Test.txt", ios::app);
         fout << Q << endl;
          fout.close();*/
}
UltraPenguin
222 / 88 / 22
Регистрация: 20.03.2014
Сообщений: 296
Завершенные тесты: 1
10.06.2016, 18:22     С++ не даёт ввести значение строки #8
во вложенном цикле используйте не i а например j
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2016, 18:39     С++ не даёт ввести значение строки
Еще ссылки по теме:

Ввести с клавиатуры значение указателя C++
Предложение ввести другое значение C++
Ввести две строки, заменить первый символ "r" символами второй строки C++

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

Или воспользуйтесь поиском по форуму:
Люблмир
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 30
10.06.2016, 18:39  [ТС]     С++ не даёт ввести значение строки #9
Благодарю
Yandex
Объявления
10.06.2016, 18:39     С++ не даёт ввести значение строки
Ответ Создать тему
Опции темы

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