2017-02-12 13 views
-4

Я хочу преобразовать индекс в строку в int, чтобы заполнить 2D-массив типа int.Покрытие индекса в строке для int

string s = "1 2 3"; 
a[0][0] = s.at(0); 

Я хочу a[0][0] хранить значение INT 1, но сейчас это хранение 49 с помощью этого метода (который я предполагаю, это прямое преобразование).

Я пробовал atoi, stoi и static_cast, но у меня была ошибка преобразования.

+0

'stoi' должен работать. Какую ошибку вы получаете точно? –

+0

Что такое «индекс в строке»? – juanchopanza

+0

это ошибка, которую я получаю: «ошибка: вызов перегруженного« stoi (char &) »неоднозначен» –

ответ

-2

Дал неверный ответ перед:

Это должно работать:

using namespace std; 
int main() 
{ 
    string str ("3"); 
    int i = str.at(i) - 48; 
    cout << i <<endl; 
    return 0; 
} 
+0

Это было мое плохое ... –

+0

Хотя ваш ответ правильный, но он не очень хороший. –

+0

Вы правы, у парня выше меня был лучший ответ XD. Это из-за кодирования ascii. –

2

При использовании

a[0][0] = s.at(0); 

вы присваивая значение символа '1' к a[0][0], который представленное интегральным значением 49 в кодировании ASCII.

Если вы уверены, что есть только одна цифра, то вы можете использовать

a[0][0] = s.at(0) - '0'; 

Вы можете использовать более гибкую стратегию.

std::istringstream str(s); 
str >> a[0][0]; 
+0

Отлично, спасибо! –