3

sstreamを使用して string を int に変換します。

しかし、文字列に整数があるかどうかはわかりません。たとえば、「hello 200」の場合に200が必要な場合や、「hello」の場合に解決策がない場合などです。

文字列に整数しかない場合、次のコードがあります。

inline int string_to_int(string s)
{
    stringstream ss(s);
    int x;
    ss >> x;
    return x;
}

ここで、s = "hello 200!" の場合 または s = "hello" 、どうすればそれを行うことができますか?

4

3 に答える 3

4

文字列の最初の整数まで不正な入力を無視する単純な可能性:

bool string_to_int(string str, int &x)
{
    istringstream ss(str);

    while (!ss.eof())
    {
       if (ss >> x)
           return true;

       ss.clear();
       ss.ignore();
    }
    return false; // There is no integer!
}
于 2013-09-21T11:43:36.843 に答える
1

有限状態マシンに基づいてパーサーを作成し、必要に応じて入力を修正します。

int extract_int_from_string(const char* s) {
   const char* h = s;
   while( *h ) {
      if( isdigit(*h) )
         return atoi(h);
      h+=1;
   }
   return 0;

} ... int i = extract_int_from_string("こんにちは 100");

于 2013-09-21T11:31:07.613 に答える