考虑例如,输入是1A003B3。在这种情况下,程序必须返回 66,即 B 的 ASCII 值。
我已经尝试过这种方式,但没有得到正确的输出。
for(int d=0;d<str.length();d++)
{
if(str[d]>max)
max=str[d];
}
您可以使用标准算法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';