تعیین عدد بودن رشته - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تعیین عدد بودن رشته

+1 امتیاز
120 بازدید

سلام.

من برای رشته از std::atoi استفاده می کنم در ضمن این پست را هم خوندم. مشکلی که وجود داره اینجاست که عبارت ورودی عدد نباشه که در همچین مواقعی برنامه خطا میده حالا c++ 11 تابعی داره که بتونم با آن ابتدا به عددی بودن رشته پی ببرم؟

سوال شده اردیبهشت 3, 1393  بوسیله ی Xavi (امتیاز 890)   2 8 77

3 پاسخ

+3 امتیاز
 
بهترین پاسخ

از regex هم می تونید استفاده کنید.

#include <regex>
 bool isNumber(const std::string & str){
	 return std::regex_match(str, std::regex("[(-|+)|][0-9]*"));
 }

 

پاسخ داده شده اردیبهشت 3, 1393 بوسیله ی مصطفی ساتکی (امتیاز 16,732)   17 25 66
+3 امتیاز

stoi  وقتی که ورودیش عدد نباشه  یا از مقدار int اندازش بزرگتر باشه exception  بر میگردونه و همین طور که میدونید اگر exception ها رو بوسیله try catch کنترل نکنین برنامه بسته میشه

به این شکل بنویسن

#include <iostream>
#include <stdexcept>

int main ()
{
    int number;
    try {
        number=std::stoi("12312312314354678903247");
    }
    catch (const std::invalid_argument& exc) {
       number=0;
    }
    catch(const std::out_of_range& exc){
        std::cout<<"Addad bozorg ast !";
        number=0;
    }

    std::cout<<number;
}

کد بالا در صورت اشتباه بودن ورودی 0 رو میزاره داخل number

پاسخ داده شده اردیبهشت 3, 1393 بوسیله ی BlueBlade (امتیاز 15,712)   13 16 85
+1 امتیاز

شما میتونی از cctype توی سی پلاس استفاده کنی به سورس زیر توجه کنید

تابع عضو : isdigit()

#include <iostream>
#include <cctype>

using namespace std;

int main(){
	
        char a[]="Fire360Boy";


	for (int i=0 ;i<=9 ;i++){
		cout << a[i] <<" is digit? " << isdigit(a[i]) << endl;
	}


return 0;
}

 

c++11, رشته, عدد, تعیین عدد بودن, خطا

پاسخ داده شده اردیبهشت 3, 1393 بوسیله ی Fire360Boy (امتیاز 3,342)   2 16 42
کاری که میخواید انجام بدید بگین
وگرنه جواب سوالی که شما پرسیدین همین هست
3-4 عدد نیست ولی -4 که عدده
اگه اینجوریه x-2 هم عدده
3-4 یک عبارته نه عدد اما -4 عدده
...