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

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

+1 امتیاز

سلام.

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

سوال شده اردیبهشت 3, 1393  بوسیله ی Xavi (امتیاز 627)   24 83 110

3 پاسخ

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

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

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

 

پاسخ داده شده اردیبهشت 3, 1393 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد اردیبهشت 6, 1393 بوسیله ی Xavi
+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 (امتیاز 2,524)   6 24 43
ویرایش شده بهمن 1, 1393 بوسیله ی haniye sarbazi
مرسی .اینو میدونم .اگر عدد منفی باشه و اگر منفی یا مثبت در وسط عدد باشه نمیشه از این روش استفاده کرد کلی حالت پیش میاد.
اگر منفی باشه مشکلی نیست حل میشه اما به نظر شما رشته "4-3" عدد هست؟
کاری که میخواید انجام بدید بگین
وگرنه جواب سوالی که شما پرسیدین همین هست
3-4 عدد نیست ولی -4 که عدده
اگه اینجوریه x-2 هم عدده
3-4 یک عبارته نه عدد اما -4 عدده
+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,315)   15 18 89
...