با سلام.
چه جوری میشه string به int کانورت بشه؟؟؟
با سلام.
چه جوری میشه string به int کانورت بشه؟؟؟
فکر کنم یه تابع بود به اسم atoi و یا wtoi.
البته بستگی به نوع string هم داره.
همونطور که اون دوست عزیز فرمودند باید از تابع atoi استفاده کنی .
تبدیل string به long integer :
int atoi ( const char * str );
تبدیل string به double :
double atof ( const char * str );
البته یک تابع دیگه به نام strtol هم هست که یادم نیست چه طور کار میکنه ، به کامپایلر رجوع کن
درخواست کد ممنوع است و مخالف قوانین سایت ،کد را باید خودتان بنویسید و فقط میتوانید درخواست راهنمایی کنید ، ولی جهت آشنایی یه مثال براتون میزنم :
بدون توابع آماده هم میشه اینکارو کرد :
#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();
}
موفق باشید ./
ممنونم از همگی
موفق باشید!!!
دوستان میشه راجع به کانورت string to float هم یه راهنماییی بکنید.
تو همون قطعه کد آقای اشگی تو فسمت for مشکل دارم.
بحث خیلی سادس ، اگه مال عدد صحیح رو متوجه بشین ، تبدیل عدد اعشاری هم هیچ سختی
نداره !
ببینید ، فرض کنیم رشته ما هستش : "123" خوب اینو میخوایم تبدیل کنیم به عدد صحیح ،
از قانون مبناها (اینجا مبنای 10) استفاده میکنیم ، شما عدد صحیح 123 رو تو مبنای 10 چطور
نشون میدید ؟! خوب به این شکل :
1*(10^2)+2*(10^1)+3*(10^0)
خوب منم دقیقا همین کارو توی حلقه انجام دادم ، کاراکترهای رشته رو جدا جدا کردم ، بعد هر
کدوم رو در توانهای عدد 10 ضرب کردم ، فقط یه نکته که جهت تبدیل کاراکتر اعداد به خود عدد
مثلا '1' به عدد صحیح یک ، کافیست از کد اسکی کاراکتر 48 واحد کم کنیم ، کاری که من
انجام دادم (چون کد اسکی ارقام بین 48 تا 57 هستش ) و همچنین این نکته که من رشته
رو از آخر به اول پیمایش میکنم تا ضرب توانهای 10 راحتتر باشه !
فک نکنم دیگه موردی مونده باشه ، باز اگه سوالی بود حتما بپرسید ./
موفق باشید .