PDA

View Full Version : مبتدی: تبدیل string به int



Amir-Shabani
پنج شنبه 06 بهمن 1390, 21:58 عصر
سلام بر همه!

توی سی شارپ وقتی یه مقدار برای متغییر میگیری که در تعریف اون متغیر از نوع عددی ذکر شده هستش برای استفاده از اون متغییر باید از تبدیل convert استفاده کنی. یعنی ورودی شما از نوع کارکتر هتسش و شما باید تبدیل string به int رو انجام بدی.... آیا توی سی ++ هم چنین چیزی وجود داره؟ اگه آره چطور باید انجام شه!؟


اصل این قطعه کد رو دانلود کنید.

وقتی اعداد رو ضربدر هم میکنم! یه رقم چرتی تحویل میده! یه چیز دیگه هم هست.... گفتم که عدد منفی رو 0 بگیر. ولی نمیگره!!!؟

Salar Ashgi
پنج شنبه 06 بهمن 1390, 23:16 عصر
روش ها زیاده ؛ یه نمونه کد براتون نوشتم :



#include <iostream>
#include <conio>
#include <string>
#include <math>
using namespace std;
int str_to_int(string num){
char ch;
int sum=0;
int f=0;
for(int i=num.size()-1;i>=0;i--){
ch = num[i];
sum+=pow(10,f++)*(((int)(ch))-48);}
return sum;}
//==========================
int main(){
string str="";
while(true){
cout<<"Enter a string :\n";
cin>>str;
int res = str_to_int(str);
cout<<"int : "<<res<<endl;
cout<<"===================\n";}
getch();
}

Amir-Shabani
جمعه 07 بهمن 1390, 09:09 صبح
با سپاس. این همه کارباید انجام داد!؟ واسه یه کار به این سادگی.... خط 10 و 12 رو میشه توضیح بدید!؟

حامد مصافی
جمعه 07 بهمن 1390, 10:06 صبح
متد atoi (http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/)رو ببین

Salar Ashgi
جمعه 07 بهمن 1390, 19:18 عصر
این همه کارباید انجام داد!؟ واسه یه کار به این سادگی....
عرض کردم که روشها زیاده و این معمول ترین روش بود که براتون گفتم .
روش ساده تر ، با استفاده از توابع کتابخانه ای atoi , itoa (عدد به رشته و رشته به عدد ) هستش ، که حامد عزیز ذکر کردن .


خط 10 و 12 رو میشه توضیح بدید!؟
پیمایش رشته از آخر به اول به خاطر اینکه :

مثلا عدد 256 تو مبنای 10 (دهدهی) میشه : 2^10*2 + 1^10 * 5 + 0^10* 6
یعنی پردازش رشته از آخر به اول ، تبدیل هر کاراکتر به عدد (با کم کردن 48 واحد از کد اسکی اش) و ضربدر توانهای متوالی 10 (شروع از صفر)

موفق باشید ./