簡體   English   中英

C ++干凈的字符串進行整型轉換

[英]C++ Clean String to int cast

據我所知,在C ++中將String轉換為int的常見方法是使用sstream:

   std::string inputString = "12 34";
   std::istringstream istr(inputString);
   int i1, i2;
   istr >> i1 >> i2;

但是,如果我想確保我的代碼可用於任何輸入,則問題是要在字符串輸入還是0之間做出決定:

   std::string inputString = "TEXT 0";
   std::istringstream istr(inputString);
   int i1, i2;
   istr >> i1 >> i2;
   cout << i1 <<"  !=  "<< i2 << endl;

我想確定用戶是否輸入了String或零,以便執行進一步的操作。 有沒有一種干凈的方法可以解決此問題,而無需使用詞法轉換或atoi? 最好的蛋eg

您可以使用無效的默認值:

#include<sstream>
#include<limits>
using std::numeric_limits;
int main(){
    std::string inputString = "TEXT 0"; 
    std::istringstream istr(inputString);
    int i1=numeric_limits<int>::min();
    int i2=numeric_limits<int>::min(); 
    std::string tmp;
    istr >> i1;
    if (i1 == numeric_limits<int>::min()) {
      // extraction failed
      i1 = 0;
      istr.clear(); // clear error flags to allow further extraction
      istr >> tmp; // consume the troublesome token
    }
    // same for i2
}

注意 :如果numeric_limits<int>::min() 不能為有效輸入,則該技術有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM