OJ_3_文字列はデジタルに変換され、

タイトル:文字列を整数に変換するには、ライブラリ関数を使用することができない要求は、整数、文字列を変換します。0の値または文字列が有効な戻り値ではありません0

nullにすることができ、英数字記号を含む文字列を入力します。
それはデジタル値の正当な表現が返されている場合は、それ以外の場合は0

 

オーバーフロー判断は困難です。

シンボルを分析します。

空の文字列。

// + - +だけで、最初に表示されることがない場合は- 、デフォルトは正の数であり、
数がない場合、//はまた、単に0を返します。

1  クラスソリューション{
 2  公共3      INT StrToInt(文字列strの){
 4          のintフラグ= 1 5          INT RES = 0 6          int型温度;
7          場合(str.length()== 0// 空字符串
8              戻り 0 ;
9          もし(STR [ 0 ] == ' - ' 10              フラグ= - 1 11          のためにINT Iは= 0 ; I <str.length(); Iは++ 12である         {
 13は             IF(STR [I] < ' 0 ' || STR [I]> [ 9。'){ // 非デジタル
14                  IF(I == 0 &&(STR [I] == ' + ' || STR [I] == ' - ')){   // のみiが0 +又は=発生- 
15                      続行;
 16                  }
 17                  {
 18が                     リターン 0 ;
 19。                 }
20は             }
 21が             {
 22である                 // INT小数:-2 ^ 31 = -2147483648 2 ^ 31-1 = 2,147,483,647。10、21億の合計。
23は、                 INT桁=(INT)(STR [I] - ' 0 ' );
 24                  TEMP * = RES 10 + 桁;
 25                  // 注意も決定オーバーフローRESが10 *かどうか、再度判定するオーバーフローデジットプラスか
 26                  / / アップ<オーバーフロー決意INT32_MAX桁RESため* 10 + 
27                  IF(のフラグ== 1 INT32_MAX / &&(RES> 10 || RES * 10 > INT32_MAX- )用桁)  
 28                      リターン 0;
 29                  // アンダーフロー決意のINT32_MIN> RES * 10 *のための桁- ( - 1)
30                  IF - (のフラグ== 1 &&(*内のフラグRES <INT32_MIN / 10 || RES * 10 *のフラグ<+ INT32_MINのための桁))  
 31、IS                      戻り 0 ;
 32の                  RES = TEMP;
 33である             }
 34はある 
35          }
 36          リターンフラグ*はRES;
 37      }
 38です }。

 

おすすめ

転載: www.cnblogs.com/grooovvve/p/12364712.html