Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
eganator
41 / 22 / 3
Регистрация: 13.11.2017
Сообщений: 175
Завершенные тесты: 1
1

Getline в различных компиляторах

17.08.2018, 05:40. Просмотров 777. Ответов 5
Метки нет (Все метки)

Добрый день. Такой вопрос. В одном компиляторе в этом участке кода проблем нет, а в visual studio компилятору не нравится 9-ая строчка, а именно getline. Что нужно сделать, чтобы он воспринял эту строку?
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
while (1)
    {
        string s;
        system("cls");
        cout << "1 - Заполнить список" << endl;
        cout << "2 - Отобразить список" << endl;
        cout << "3 - Выход" << endl;
        cout << "Ваш выбор: ";
        getline(cin, s);
        system("cls");
        if (s.length() != 1 || !(s[0] >= '0' && s[0] <= '3'))
        {
            cout << "Некорректный вариант выбора!" << endl;
            system("pause");
            continue;
        }
        switch (s[0])
        {
        case '1': Input(car, n);
            break;
        case '2': Show(car, n);
            break;
        case '3':
            break;
        }
      }
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2018, 05:40
Ответы с готовыми решениями:

Рекурсия в различных компиляторах
Доброго времени суток. Задача: дано целое число n, нужно получить его битовое...

Отличие getline() от cin.getline()
Чем отличается getline() от cin.getline() ?

Разный вывод в разных компиляторах
Всех с наступающей весной!) Проблема такая, вот этот код: int main() {...

Разный вывод в разных компиляторах
Здравствуйте! Вот код: void read_massiv(int *m, int length) { for (int i...

Способы распределение a различных бананов, b различных яблок и c различных груш
Влад хочет взять с собой для ланча пару фруктов. У него есть a различных...

5
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4608 / 2422 / 674
Регистрация: 18.10.2014
Сообщений: 4,133
17.08.2018, 06:52 2
Цитата Сообщение от eganator Посмотреть сообщение
а в visual studio компилятору не нравится 9-ая строчка, а именно getline.
Что значит это кокетничанье??? Что такое "компилятору не нравится"??? Где у вас в вопросе процитировано сообщение компилятора?

И что это за огрызок кода? Где ваши #include? Мы должны телепатически догадаться, какие #include вы сделали, а какие нет?
0
_stanislav
Рука
388 / 359 / 197
Регистрация: 16.08.2014
Сообщений: 1,623
Завершенные тесты: 2
17.08.2018, 06:54 3
Цитата Сообщение от eganator Посмотреть сообщение
а в visual studio компилятору не нравится 9-ая строчка
что пишет то? вроде все нормально.
0
eganator
41 / 22 / 3
Регистрация: 13.11.2017
Сообщений: 175
Завершенные тесты: 1
17.08.2018, 07:04  [ТС] 4
TheCalligrapher, _stanislav, библиотеки:
C++
1
2
3
#include <iostream>
#include <conio.h>
#include <string.h>
Сообщение компилятора: 1>c:\visual c++\project1\project1\sruct1.cpp(93): error C3861: getline: идентификатор не найден

Добавлено через 1 минуту
_stanislav, Да, в DEV C++ всё компилируется. А в Visual не воспринимает getline

Добавлено через 5 минут
TheCalligrapher, И вот код полностью
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
 
struct Auto 
{
    char *Marca;
    char *Country;
    char *BodyType;
    int Year;
};
 
void Input(Auto s[], int n)
{
    for (int i = 0; i < n; i++)
    {
        cout << i + 1 << ": \n\n";
 
        cout << "Введите марку: ";
        s[i].Marca = new char[30];
        cin.get();
        cin.getline(s[i].Marca, 30);
 
        cout << "Введите страну производителя: ";
        s[i].Country = new char[30];
        cin.get();
        cin.getline(s[i].Country, 30);
 
        cout << "Введите тип кузова: ";
        s[i].BodyType = new char[30];
        cin.get();
        cin.getline(s[i].BodyType, 30);
 
        cout << "Введите год выпуска: ";
        cin >> s[i].Year;
        while (!(cin >> s[i].Year) || s[i].Year < 1900 || s[i].Year > 2018)
        {
            cout << "Некорректное значение!!! \n";
            cout << "Введите год выпуска: \n";
        }
        cout << endl;
    }   
}
 
void Show(const Auto s[], int n)
{
    cout << "АВТОМОБИЛИ" << endl;
    for (int i = 0; i > n; i++)
    {
        cout << i + 1 << ": \n";
        cout << "Марка: " << s[i].Marca << endl;
        cout << "Строна пориозводтель: " << s[i].Country << endl;
        cout << "Тип кузова: " << s[i].BodyType << endl;
        cout << "Год выпуска: " << s[i].Year << endl;
        cout << "------------------------------------" << endl;
        cout << "------------------------------------" << endl;
        cout << endl;
    }
}
 
void Free(Auto s[], int k)
{
    for (int i = 0; i < k; i++)
    {
        delete[] s[i].Marca;
        delete[] s[i].Country;
        delete[] s[i].BodyType;
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int n;
    cout << "Введите количество автомобилей: ";
    cin >> n;
 
    Auto *car = new Auto[n];
 
    while (1)
    {
        string s;
        system("cls");
        cout << "1 - Заполнить список" << endl;
        cout << "2 - Отобразить список" << endl;
        cout << "3 - Выход" << endl;
        cout << "Ваш выбор: ";
        getline(cin, s);
        system("cls");
        if (s.length() != 1 || !(s[0] >= '0' && s[0] <= '3'))
        {
            cout << "Некорректный вариант выбора!" << endl;
            system("pause");
            continue;
        }
        switch (s[0])
        {
        case '1': Input(car, n);
            break;
        case '2': Show(car, n);
            break;
        case '3':
            break;
        }
 
        Free(car, n);
        delete[] car;
    }
    _getch();
    return 0;
}
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4608 / 2422 / 674
Регистрация: 18.10.2014
Сообщений: 4,133
17.08.2018, 07:18 5
Лучший ответ Сообщение было отмечено eganator как решение

Решение

Цитата Сообщение от eganator Посмотреть сообщение
Сообщение компилятора: 1>c:\visual c++\project1\project1\sruct1.cpp(93): error C3861: getline: идентификатор не найден
Функция std::getline и класс std::string объявлены в стандартном заголовке <string>. У вас же этот заголовок нигде не включается. Неудивительно, что код не компилируется.

В то же время вы зачем-то включили в свой код Сишный <string.h>.
1
eganator
41 / 22 / 3
Регистрация: 13.11.2017
Сообщений: 175
Завершенные тесты: 1
17.08.2018, 07:26  [ТС] 6
TheCalligrapher, Спасибо, подвела невнимательность.
0
17.08.2018, 07:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2018, 07:26

Программа не работает на всех компиляторах одинаково
Привет. #include &lt;iostream&gt; using namespace std; void...

Почему в программах, компилированных в С++-компиляторах так много лишнего кода?
Здравия всем! Никому не интересное предисловие: Захотел перенсти своего...

Объясните разницу между "cin.getline" и "std::getline"
string a; cin.getline(a); getline(cin, a);в чем разница между...


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

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

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