ورود

View Full Version : تبدیل رشته به کد اسکی در C++‎‎‎



F.N.44
پنج شنبه 24 دی 1394, 10:06 صبح
سلام دوستان

می خوام یک رشته رو به کد اسکی تبدیل کنم البته به این شکل :
رشته کاراکتر به کاراکتر و به ترتیب در یک آرایه ذخیره بشه
و هر خونه آرایه که الان یک کاراکتر از رشته هست به کد اسکی معادلش تبدیل بشه


همچنین برعکس این کار یعنی آرایه ای از کد اسکی بدن و رشته رو بخوان (منظور از رشته آرایه ای از کاراکترها نیست یعنی نوعش string بشه نه char*)

مثال :
;"string str ="computer
تبدیل به آرایه ای از کاراکترهای رشته بشه به ترتیب


r
e
t
u
p
m
o
c



بعد هر کدوم از این خونه های آرایه به کد اسکی تبدیل بشن


114
101
116
117
112
109
111
99




چندتا کد نوشتم اما نمیدونم چرا جواب صحیح نمیده......

Poores
پنج شنبه 24 دی 1394, 14:24 عصر
شما هر کارکتر رو به راحتی میتونی به کد اسکی تبدیل کنی

string st = "computer";

for(int i=0;i<st.length();i++)
cout << (int) st[i];


این برنامه کد اسکی کاراکتر های یک رشته رو چاپ میکنه ،
همچنین به صورت برعکس میتونین عدد رو به کارکتر تبدیل کنید :


cout << (char) 99

F.N.44
پنج شنبه 24 دی 1394, 15:01 عصر
ممنون از پاسخگوییتون اما من این کد که شما فرمودین رو قبلا نوشتم اما مثلا جوابی که برای من چاپ میکنه برای کلمه computer:

00E0CE28

درصورتی که من میخوام کاراکتر به کاراکتر تبدیل به عدد شده و در خروجی نمایش پیدا کنه ، مثل جدول آخری در پست قبلی

zero_ox
پنج شنبه 24 دی 1394, 17:47 عصر
سلام : ازاین استفاده کن . کد بالاهم مشکلی نداره .

// Example program
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str="computer" ;
unsigned int i;
for(i=0 ;i<str.length();i++){
cout<<static_cast<int>(str[i])<<' ';
}
}

F.N.44
پنج شنبه 24 دی 1394, 18:42 عصر
از پاسخگویی شما ممنوم
اما این روش هم جواب نمیده شما میتونید خودتون تست کنید مثلا من کد شما رو دقیقا در ویژال استدیو کپی کردم و جوابی که گرفتم عدد 99 بود و برای برنامه خودم یک عدد رو چندین بار با فاصله چاپ کرد

zero_ox
پنج شنبه 24 دی 1394, 18:59 عصر
احتمالا به خاطر هدر باشه من الان ویژوال استادیو ندارم تست کنم .شما هدر string.h رو اینکلود کن ببین چی میشه

zero_ox
پنج شنبه 24 دی 1394, 19:10 عصر
می تونی این رو هم امتحان کنی

#include <iostream>
#include <string>
using namespace std;
int main()
{
char str[]="computer";
int len=sizeof(str)-1 ;
int i;
for(i=0;i<len;i++)
cout<<static_cast<int>(str[i])<<' ' ;
}

F.N.44
پنج شنبه 24 دی 1394, 20:08 عصر
این کد شما جواب درستی داد :تشویق:
اما من در برنامه ام باید رشته رو از کاربر بگیریم و باید نوع تعریفیش string باشه چون طولش مشخص نیست و با این نوع متغیر(string) جواب درستی نمیدهد.نمیدونم شاید در نوع تبدیل
char* به string برنامه درست کار نمیکنه!

راستی نوع include هم فرقی نکرد

zero_ox
پنج شنبه 24 دی 1394, 20:40 عصر
شما درکد اولی string رو به این صورت تغریف کن ببین جوا ب می ده

string str("computer")

Poores
جمعه 25 دی 1394, 01:21 صبح
ممنون از پاسخگوییتون اما من این کد که شما فرمودین رو قبلا نوشتم اما مثلا جوابی که برای من چاپ میکنه برای کلمه computer:

00E0CE28

درصورتی که من میخوام کاراکتر به کاراکتر تبدیل به عدد شده و در خروجی نمایش پیدا کنه ، مثل جدول آخری در پست قبلی

این خروجی برنامه



برای حالتی که از کاربر دریافت بشه رشته :

#include <iostream>
#include <string>
using namespace std;
int main(){

string st;
cin >> st;

for (int i = 0; i < st.length(); i++){
cout << (int)st[i] << '\t';
}

}


احتمالا اشتباه کوچکی دارید که این طور میشه

zero_ox
جمعه 25 دی 1394, 06:42 صبح
خوب اینم خروجی vs شما پروژه رو rebuild کن اگه بازم همینجور بود متن ارور یا وارنیگ رو بزار اینجا.

F.N.44
جمعه 25 دی 1394, 13:06 عصر
این خروجی برنامه



برای حالتی که از کاربر دریافت بشه رشته :

#include <iostream>
#include <string>
using namespace std;
int main(){

string st;
cin >> st;

for (int i = 0; i < st.length(); i++){
cout << (int)st[i] << '\t';
}

}


احتمالا اشتباه کوچکی دارید که این طور میشه

ممنون از کمک تون دوستان
این کد شما هم جداگونه تو ویژال استدیو ک‍‍پی کردم جواب داد :تشویق: منم دقیقا همچین چیزی می خوام در برنامه ام، اما نمیدونم چرا جواب درست نمیداد. حدس میزنم بخاطر حافظه های پویایی که در برنامه تعریف کردم باشه آخه هیچ خطا و ... هم نمیده فقط درست کار نمیکنه .
ممنوووون