2015-11-02 3 views
0

Я знаю, что это глупый вопрос, но он не разрешает, и я ищу Google, но это тоже не помогло. Я хочу, чтобы выбрать подстрока из моей строки, а затем преобразовать его в значение ASCII, но он показывает мне ошибку:Преобразование char в значение ascii

int a=char(S.substr(i-1,1)); 
     int b=S.substr(i ,1); 
     if ((a== 13) && (b== 10)) 
     break; 

это моя ошибка:

pdusms.cpp:1020: error: invalid cast from type 'std::basic_string' to type 'char' int a=char(S.substr(i-1,1));
pdusms.cpp:1021: error: invalid conversion from 'const char*' to 'int' [-fpermissive] int b=S.substr(i ,1).c_str(); ^
How can i do that? how can i change the char to int (show ASCII value)

+0

Попробуйте int b = S.substr (i, 1) .c_str(); –

+0

Я делаю это. но имеет ошибку –

+0

@OzairKafray 'c_str' возвращает указатель. Это не конвертируется в 'char'. – emlai

ответ

2

Результат substr является строка, а не символ.
Односимвольная строка не является символом.

Используйте индексирование, чтобы получить символы.

Вы хотите

int a = S[i-1]; 
int b = S[i]; 

, но если вы ищете линии разделителей не следует сравнивать со значениями ASCII - использовать

if (S[i-1] == '\r' && S[i] == '\n') 

, который является портативным.

Смежные вопросы