C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++で独自のatoi()を作成する


cプログラミング言語のatoi()関数は、文字列から整数への変換を処理するために使用されます。この関数は文字列を入力として受け取り、整数型の値を返します。

構文

int atoi(const char string)

受け入れられたパラメータ − atio()関数は、同等の整数に変換される入力として文字列を受け入れました。

返品タイプ −関数は整数値を返します。値は有効な文字列に相当する整数になります。それ以外の場合は0が返されます。

atoi()関数の実装-

文字列の各文字を取得し、前の結果に10を掛けた数値を加算して整数を作成します。

負の整数の場合、文字列の最初の文字が-であるかどうかを確認し、最終結果に-1を掛けます。

各文字が0から9の間にあるかどうかをチェックすることにより、有効な文字列をチェックします。

ソリューションの実装を示すプログラム

#include <iostream>
using namespace std;
bool isNumericChar(char x) {
   return (x >= '0' && x <= '9') ? true : false;
}
int myAtoi(char* str) {
   if (*str == '\0')
      return 0;
   int result = 0;
   int sign = 1;
   int i = 0;
   if (str[0] == '-') {
      sign = -1;
      i++;
   }
   for (; str[i] != '\0'; ++i) {
      if (isNumericChar(str[i]) == false)
         return 0;
      result = result * 10 + str[i] - '0';
   }
   return sign * result;
}
int main() {
   char string[] = "-32491841";
   int intVal = myAtoi(string);
   cout<<"The integer equivalent of the given string is "<<intVal;
   return 0;
}

出力

The integer equivalent of the given string is -32491841

  1. C ++で文字列をトークン化しますか?

    最初の方法は、文字列ストリームを使用して、スペースで区切られた単語を読み取ることです。これは少し制限されていますが、適切なチェックを提供すれば、タスクはかなりうまくいきます。 例 #include <vector> #include <string> #include <sstream> using namespace std; int main() {    string str("Hello from the dark side");    string tmp; // A string

  2. 独自のシーザー暗号エンコーダーの書き方

    シーザー暗号について聞いたことがありますか ? ジュリアスシーザーはこのテクニックを使用して、敵からの秘密のメッセージを隠しました! シーザー暗号は、最も原始的な暗号化技術の1つです。 このシステムの背後にある主なアイデアは、文字を回転させることです。 x個のアルファベット上の位置 。 たとえば、x = 1の場合 、「A」は「B」になり、「C」は「D」になります。 では、これをコードでどのように実装するのでしょうか? よろしくお願いします。見た目ほど難しくはないことがわかりました。文字は数字(ASCIIコード)で表すことができるという事実を利用します。これにより、2つの数字を