PDA

View Full Version : مشکل با کلاس string



the end
شنبه 30 آذر 1392, 12:27 عصر
سلام اساتید بزرگوار
من یه مشکل با string دارم
من قصد دارم از string به عنوان آریه استفاده کنم طوری که تعداد خونه های این string توسط کاربر تعیین شه
یعنی یه عدد از کاربر به عنوان تعداد خونه ها گرفته بشه و همچنین محتویات اون خونه ها هم نوسط کاربر پر بشه...



int main()
{
int x=0;
cout << "please Enter number of blanks :" << endl;
cin >> x;
string STUDnumbers;
cout << "Enter the name of blanks: " << endl;

for (int i=0; i <= x; i++) {
getline(cin, STUDnumbers );
}

cout << STUDnumbers;
}


اگه کمک کنید ممنون میشم

karimi72
شنبه 30 آذر 1392, 15:23 عصر
برای این کار تابع insert موجود در اشیای string استفاده کنید به این مثال توجه کنید
#include <iostream> #include <string> int main () { std::string str="to be question"; std::string str2="the "; std::string str3="or not to be"; std::string::iterator it; // used in the same order as described above: str.insert(6,str2); // to be (the )question str.insert(6,str3,3,4); // to be (not )the question str.insert(10,"that is cool",8); // to be not (that is )the question str.insert(10,"to be "); // to be not (to be )that is the question str.insert(15,1,':'); // to be not to be(:) that is the question it = str.insert(str.begin()+5,','); // to be(,) not to be: that is the question str.insert (str.end(),3,'.'); // to be, not to be: that is the question(...) str.insert (it+2,str3.begin(),str3.begin()+3); // (or ) std::cout << str << '\n'; return 0; }

karimi72
شنبه 30 آذر 1392, 15:25 عصر
چرا شکلش بد شد را نمی دونم از تگ کد نویسی استفاده کرده ام ولی درست نشده اگر select کنید و در یک ویرایشگر متن کپی کنید درست می شود

the end
شنبه 30 آذر 1392, 16:46 عصر
چرا شکلش بد شد را نمی دونم از تگ کد نویسی استفاده کرده ام ولی درست نشده اگر select کنید و در یک ویرایشگر متن کپی کنید درست می شود

ممنون دوست من که پاسخ دادین
ولی من متوجه نشدم کد رو select all کردم و تو یه تکست پیست کردم و لی متاسفانه همش سر هم شده بود اگر بیشتر توضیح بدین ممنون میشم

asdasd123123
شنبه 30 آذر 1392, 17:30 عصر
سلام دوست عزیز
از این کد استفاده کن:

#include <iostream>
#include <string>
int main()
{
std::string x;
getline(cin,x); //vorodi
std::cout<<x<<'\n'; //khoroji
system("pause");
}

استرینگ نیازی به تعیین اندازه مثل آرایه ای از کاراکتر ها نداره. یک سری توابع در کلاس string هست که به ویرایش رشته کمک می کنه. یه دات جلوی اسم متغییر بذارید تا لیست توابع رو ببینید. (مثلا substr خیلی مهمه)
مقدار دهی اولیه استرینگ: (و برخی عملگرها)

#include <iostream>
#include <string>
int main()
{
std::string x="ali hanafi";
std::string y=x;
std::string z=x+" "+y;
std::string u;
u="salam "+x;
u+=x;
std::string t="abc";
std::string y="abd";
if(y>t) std::cout<<"bar asase horofe alefba";
u.clear(); // or x="";
std::swap(x,y);
bool rr=u.empty(); // or (u=="")
std::string gg(50,'*');
std::cout<<gg;
system("pause");
}

دسترسی به کاراکتر های یک استرینگ: مثل آرایه میشه یعنی یه آکولاد بزار جلوش داخلش ایندکس. (فقط برای چاپ و نه ویرایش چون که اصلا آرایه نیست این عملگر رو جدا واسش پیاده کردن.)
طول رشته هم: اسم متغییر یه دات size (و یا length که هیچ فرقی با هم نمی کنن.)

the end
سه شنبه 03 دی 1392, 16:25 عصر
سلام دوست عزیز
از این کد استفاده کن:
استرینگ نیازی به تعیین اندازه مثل آرایه ای از کاراکتر ها نداره. یک سری توابع در کلاس string هست که به ویرایش رشته کمک می کنه. یه دات جلوی اسم متغییر بذارید تا لیست توابع رو ببینید.
مقدار دهی اولیه استرینگ: (و برخی عملگرها)
دسترسی به کاراکتر های یک استرینگ: مثل آرایه میشه یعنی یه آکولاد بزار جلوش داخلش ایندکس.
طول رشته هم: اسم متغییر یه دات size (و یا length که هیچ فرقی با هم نمی کنن.)

ممنون که پاسخ دادی دوست من
ولی با getline مقدار جدید به صورت جایگزین مقدار قبلی داخل متغیر string ریخته میشه
من می خواستم که این مقادیر ذخیره بشه با این تفاوت که تعداد این مقادیر هم توسط کاربر معلوم شه
باز هم ممنون

the end
پنج شنبه 05 دی 1392, 22:39 عصر
اساتید یکی جواب این حقیر رو بده لطفا

asdasd123123
یک شنبه 08 دی 1392, 08:58 صبح
ولی با getline مقدار جدید به صورت جایگزین مقدار قبلی داخل متغیر string ریخته میشه
من می خواستم که این مقادیر ذخیره بشه با این تفاوت که تعداد این مقادیر هم توسط کاربر معلوم شه
باز هم ممنون
فکر کنم منظورتون این بود که تعدادی استرینگ (که تعدادش هم توسط کاربر وارد شه) ذخیره کنیم.
میشه از آرایه ای از استرینگ ها استفاده کرد و برای اینکه تعداد رو هم کاربر بگه آرایه پویا درست می کنیم. مثلا:

#include <iostream>
#include <string>
using namespace std;
int main()
{
int *num=new int;
cin>>*num;
cin.get(); // this is for enter of cin. if you dont code this, enter get in *str.
string *str=new string[*num];
for(int i=0;i<*num;i++) getline(cin,*(str+i));
for(int i=0;i<*num;i++) cout<<*(str+i)<<'\n';
delete []str;
delete num;
}

اگه منظورتون این نبود بیشتر توضیح بدید متوجه نشدم.