Ошибка при попытке преобразовать строковый символ в int

У меня есть простая программа, где я хочу сохранить входные данные в матрицах для легкого доступа. У меня проблемы с преобразованием простого строкового символа в int, может кто-нибудь объяснить, почему мой код выдает мне это сообщение, когда я пытаюсь скомпилировать?

acm.cpp:20:42: error: request for member ‘c_str’ in ‘temp.std::basic_string<_CharT, _Traits, _Alloc>::operator[]<char, std::char_traits<char>, std::allocator<char> >(((std::basic_string<char>::size_type)j))’, which is of non-class type ‘char’

Кажется, проблема в том, что я использовал функцию c_str (), но если я не ошибаюсь, это необходимо для преобразования символов в значения типа int.

Мой код:

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
// read input from console
int N, M;
cin >> N; // number of people
cin >> M; // max number of topics

// read in binary numbers into matrix
int binaryNumbers[N][M];
for (int i = 0; i < N; i++) {
string temp;
cin >> temp;
for (int j = 0; j < M; j++) {
binaryNumbers[i][j] = atoi(temp[j].c_str());
cout << binaryNumbers[i][j] << endl;
}
}

return 0;
}

0

Решение

Использование:

binaryNumbers[i][j] = temp[j] - '0';

Вам не нужно использовать atoi для одной цифры его числовое значение — просто смещение от '0',

Но если вы действительно хотите использовать atoiвам нужно будет создать отдельную строку:

for (int j = 0; j < M; j++) {
char digit[2] = "0";
digit[0] = temp[j];
binaryNumbers[i][j] = atoi(digit);
cout << binaryNumbers[i][j] << endl;
}
0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector