Вы можете использовать стандартный алгоритм std::max_element
. Например,
#include <iostream>
#include <string>
#include <iterator>
#include <algorithm>
int main()
{
std::string s( "1A003B3" );
auto it = std::max_element( std::begin( s ), std::end( s ),
[]( char c1, char c2 )
{
return ( unsigned char )c1 < ( unsigned char )c2;
} );
std::cout << "The maximum value is "
<< static_cast<int>( static_cast<unsigned char>( *it ) ) << '\n';
return 0;
}
Вывод программы:
The maximum value is 66
Что касается вашего фрагмента кода, то он должен выглядеть следующим образом
unsigned char max = ( unsigned char )str[0];
for( std::string::size_type i = 1; i < str.length(); i++ )
{
if ( max < ( unsigned char )str[i] ) max = ( unsigned char )str[i];
}
И вывести значениеиспользуйте выражение
std::cout << static_cast<int>( max ) << '\n';