Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
3 / 3 / 1
Регистрация: 08.03.2020
Сообщений: 166
1

Преобразование строки в int

30.03.2020, 20:27. Показов 669. Ответов 11

Привет. Сказали сделать такую вещь, но я не знаю как реализовать.
Преобразование строки в int


getline нельзя читать в int.
Прочитайте в строку, а потом преобразуйте.

Это часть кода, которая ругается
C++
1
fin << "Фамилия - " << arr[i].Name << ", ";
i = int
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2020, 20:27
Ответы с готовыми решениями:

Разбиение строки и преобразование string в int
Пользователь вводит цену товара таким образом: 20-55. Нужно разбить данную строку (она типа string...

Как происходит преобразование int<<float<int
Как происходит преобразование int&lt;&lt;float&lt;int int n=222222222; float f=(float)n; n=(int)f;...

Какая из этих функций int Q(int w) int W(int y,int u,int i) сработает быстрее?
Если есть 2 функции(простые или перегруженные) к примеру Q(int w) int W(int y,int u,int i)или int...

Объясните int** a = new int* [n]; смысл этой строки. Это выделение памяти под чего?
#include &lt;iostream&gt; #include &lt;locale.h&gt; using namespace std; int main() { setlocale(LC_ALL,...

11
3 / 3 / 1
Регистрация: 08.03.2020
Сообщений: 166
30.03.2020, 21:16  [ТС] 2
Это часть кода, которая ругается(не ту вставил)
C++
1
2
3
4
getline(cin, arr[i].Name);
    fin << "Фамилия - " << arr[i].Name << ", ";
    cout << "Введите год рождения :" << endl;
    getline(cin, arr[i].Year);
На последний getline
0
Мозгоправ
1730 / 1024 / 468
Регистрация: 01.10.2018
Сообщений: 2,137
Записей в блоге: 2
30.03.2020, 21:20 3
sokk28,
C++
1
2
3
4
5
    getline(cin, arr[i].Name);
    fin << "Фамилия - " << arr[i].Name << ", ";
    cout << "Введите год рождения :" << endl;
    cin >> arr[i].Year;
    cin.ignore();
0
3 / 3 / 1
Регистрация: 08.03.2020
Сообщений: 166
31.03.2020, 13:43  [ТС] 4
L0M
Я не весь код отправил, по этому вы не так поняли наверное,моя ошибка.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cout << "Сколько человек вы хотите добавить?" << endl;
        cout << "Количество: " << endl;
        int pp;
        cin >> pp;
        for (int i = 0; i < pp; ++i) 
        {
            cout << "Введите фамилию: " << endl;
            getline(cin, arr[i].Name);
            fin << "Фамилия - " << arr[i].Name << ", ";
            cout << "Введите год рождения :" << endl;
            getline(cin, arr[i].Year);
            fin << "Год рождения - " << arr[i].Year << ", ";
            cin.ignore();
            cout << endl;
        }
0
7244 / 4900 / 2821
Регистрация: 18.12.2017
Сообщений: 15,385
31.03.2020, 14:24 5
sokk28, поставьте cin.ignore(); первой строкой цикла

также возможно нужно заменить fin на fout - нужно видеть весь код, неизвестно что и как у Вас названо
0
1367 / 590 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
31.03.2020, 14:42 6
вместо getline(cin, arr[i].Year);сделать cin>>arr[i].Year

Вы хотите число записать как строку?
0
3 / 3 / 1
Регистрация: 08.03.2020
Сообщений: 166
31.03.2020, 15:21  [ТС] 7
daslex
Хочу добавить в структуру то, что было введено с клавиатуры.
0
7244 / 4900 / 2821
Регистрация: 18.12.2017
Сообщений: 15,385
31.03.2020, 15:47 8
sokk28, так ?
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
#include <iostream>
#include <iomanip>
using namespace std;
 
struct Student
{
    string name;
    int year;    
};
 
void Set (Student *data, int n)
{
    for (int i = 0; i < n; i++)
    {
        cin.ignore();
        cout << "Student " << i+1 << ":\n"; 
        cout << "name: "; 
        getline(cin, data[i].name);        
        cout << "year: "; 
        cin >> data[i].year;        
    }
}
 
void Print (Student *data, int n)
{
    cout << "NAME                     YEAR\n";
    for (int i = 0; i < n; i++)    
        cout << setw(25) << left << data[i].name << setw(7) << left << data[i].year << "\n";    
}
 
int main()
{
    int n;
    
    cout << "n="; cin >> n;
    
    Student *data = new Student[n];    
    
    Set(data,n);
    cout << "\n";
    Print(data,n);    
    
    delete[]data;
system("pause");
return 0;
}
1
3 / 3 / 1
Регистрация: 08.03.2020
Сообщений: 166
31.03.2020, 16:10  [ТС] 9
Yetty
18 и 20 строчка, оно добавляет данные в структуру, да?
0
7244 / 4900 / 2821
Регистрация: 18.12.2017
Сообщений: 15,385
31.03.2020, 17:29 10
Цитата Сообщение от sokk28 Посмотреть сообщение
добавляет данные в структуру, да
скорее в массив структур. можете сказать какое отношение ко всему выше сказанному имеет название темы ?
0
1367 / 590 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
31.03.2020, 17:35 11
sokk28, учитывайте тип, вы не можете для int использовать getline:
C++
1
2
int x;
getline(cin, x); //будет ошибка
Эта функция для чтения строки типа string (для чтения того, что basic_string). Она даже массив символьный не возьмёт:
C++
1
2
char x[255];
getline(cin, x); //будет ошибка
Чтобы считать число и запомнить его в переменную, нужно использовать >>, чтобы считать строку типа string с пробелами, нужно использовать std::getline (то, что Вы использовали) или метод объекта cin: cin.getline (что в некотором роде хуже std::getline). Если надо считывать слова через пробел или строковые значения на отдельных строчках и без пробелов, то можно использовать для считывания >>

Вы считывали int, а считывали его функцией, которая принимает не число, а строку, она не умеет принимать на обработку число, поэтому у Вас была ошибка. У Вас Age типа int, и этот Age надо считывать как обычное число: cin >> arr[i].Age

Поскольку у Вас Name имеет тип string, то функция getline с этой частью справляется:
C++
1
2
3
 
string Name;
getline(cin, Name); //OK
Короче, для строк getline, а для численных типов >>
Иногда строки через >>
1
3 / 3 / 1
Регистрация: 08.03.2020
Сообщений: 166
31.03.2020, 17:59  [ТС] 12
daslex
Спасибо что объяснили, я понял

Добавлено через 1 минуту
Yetty
Создавал тему с таким названием,т.к вопрос заключался в этом, но вы смогли решить это по другому, за что вам спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2020, 17:59

Преобразование int к char
Вот код #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;iostream.h&gt; #include &lt;cstdio&gt;...

преобразование из void* в int[n]
Всем привет) Пишу программу, которая в отдельном потоке сортирует массив. такая проблема, на...

Преобразование string в int
Всем привет, нужно преобразовать string в int #include &lt;iostream&gt; #include &lt;stdlib.h&gt;...

Преобразование string в int
Добрый день. Есть переменная типа string, в которой записана цифра. Как мою строку перевести к int?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru