Преобразование string в int через stringstream

Долгое время пытался преобразовать string в int. На данный момент пытаюсь разобраться с номером абонента. При использовании stoi выбивает ошибку, а при istringstream то, что на скрине( он неверно преобразовывает ). И при этом нужно преобразованное запихнуть в массив (меняю только номер абонента):

#include <iostream>
#include <sstream>
#include <string>
#include <windows.h>
#include <fstream>
using namespace std;

int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    stringstream num;
    string abon;
    int numb[25];
    ifstream f("АТС.txt");
    int v, i = 0;


    while (f) {
        stringstream num;
        string str;
        getline(f, str);
        num << str;
        num >> abon >> numb[i];
        cout << str << endl;
        cout << "после преобразования:" << numb[i] << endl;

        i++;
    }

    f.close();
    return 0;
}

после компиляции: введите сюда описание изображения


Ответы (1 шт):

Автор решения: Mikhailo

Вы читаете в

int numb[25];

а int помещает число не более 2 с небольшим миллиардов. Вы же пытаетесь в него запихнуть нечто 12-значное. Вот он и получает максимально представимое в int значение, и поток переходит в состояние ошибки и больше ничего не читает.

→ Ссылка