PDA

View Full Version : مشکل در ریختن رشته ها به فایل



mohamnt
جمعه 04 تیر 1389, 18:23 عصر
توی این کد
void information::Cadd()
{
system("clear");
ofstream myfile ("list.txt",ios::app);
char name[20],family[20],father[20],err[2];
unsigned short int age;
long c_no;
for (;;)
{
system("clear");
cout<<"Enter customer information (0 = quit ) \n";
cout<<"number: \t";
cin>>c_no;
if(c_no==0) break;
cout<<"name : \t";
cin.getline(err,2);
cin.getline(name,20);
cout<<"last name : \t";
cin.getline(family,19);
cout<<"father : \t";
cin.getline(father,20);
cout<<"age : \t";
cin>>age;
myfile<<c_no<<"\n"<<name<<"\n"<<family<<"\n"<<father<<"\n"<<age<<"\n";
}


}
با دو تا مشکل مواجه هستم که 1 -
وقتی رشته cin.getline (name,20) رو می نویسم توی برنامه اولین رشته ای که خونده میشه cin.getline(family,20) هست و من برای اینکه اولیسن رشته name خونده بشه یه رشته بنام err گذاشتم که از اون رد بشه :متفکر:
2 - برای اینکه اطلاعات به خروجی فرستاده بشه مجبورم وقت خونده شدن number یه داده اشتباه بدم در غیر اینصورت چیزی به خروجی نمیره ولی من می خوام با هر باز اجرای حلقه for داده هایی که قبل از اون اجرا شده به فایل فرستاده بشه ، این مشکل رو چطور باید حل کرد ؟
3 - برای اینکه دوباره خط اول فایل خروجی رو یا 3 خط رو در سه رشته قرار بدم باید چیکار کنم ؟؟

Salar Ashgi
جمعه 04 تیر 1389, 20:59 عصر
کدتون کمی مبهمه ، ولی یه مثال ساده از نوشتن در فایل توسط رشته ها میذارم !



#include <iostream>
#include <conio>
#include <fstream>
#include <string>
using namespace std;
int main(){
ofstream fout("E:\\Test.txt");
string name,family,number;
cout<<"Enter name & family & number \n";
cin>>name;
cin>>family;
cin>>number;
fout<<"Name is : "<<name<<endl;
fout<<"Family : "<<family<<endl;
fout<<"Number : "<<number<<endl;
//==========
fout.close();
getch();
}


موفق باشید .

mohamnt
جمعه 04 تیر 1389, 22:42 عصر
من به ویندوزدسترسی ندارم :ناراحت:
ولی این یه قسمت از یه کلاسه و مشکل من هم همونerr ه

string name,family,number;
اگه این شکل بشه دو تا مشکل بوجود می آد یکیش اینه که نامبرم میتونه یه رشته کاراکتری باشه دوم اینه که برای این که رشته بعد از فاصله وارد رشته بعدی نشه باید چیکار کرد مثلا
ali reza رو من آزمایش کردم ali توی رشته اول میره و reza در رشته دوم

Salar Ashgi
شنبه 05 تیر 1389, 10:04 صبح
من به ویندوز دسترسی ندارم


یعنی چی ؟ منظور از ویندوز ، کامپیوتره یا اینکه سیستم عامل تون ویندوز نیست ؟!



ولی این یه قسمت از یه کلاسه و مشکل من هم همونerr ه


خوب طبیعیه ، ما برای استفاده از متود ، متغیر یا آبجکت باید هدر فایل مربوطه شو include کنیم ،

نوع داده ای String هم آبجکتی از کلاس String هستش ، که برای استفاده ازش باید هدر String.h

include کنید !



یکیش اینه که نامبرم میتونه یه رشته کاراکتری باشه


خوب شما می گید به کاربر که یه عدد صحیح وارد کنه ، یا هم اینکه میتونید یه متود واسه اینکار بنویسید !



دوم اینه که برای این که رشته بعد از فاصله وارد رشته بعدی نشه باید چیکار کرد


فکر کنم این مربوط میشه به نوع گرفتن String ها توسط آبجکت Cin از کلاس iostream .

mohamnt
شنبه 05 تیر 1389, 12:07 عصر
من به کامپیوتر دسترسی دارم ولی سیستم عامل ام ویندوز نیست
string رو در هدر قرار دادم

خوب شما می گید به کاربر که یه عدد صحیح وارد کنه ، یا هم اینکه میتونید یه متود واسه اینکار بنویسید !

آخه اگه کاربر خطایی کنه و داده اشتباه بده امکان این هست که کلی از زحماتش هدر بره البته نه در این برنامه :لبخند:

فکر کنم این مربوط میشه به نوع گرفتن String ها توسط آبجکت Cin از کلاس iostream .

من فرضا x[] رو با cin.getline مقدار دهی میکردم ولی نمی دونم string ها رو چطور باید خوند که فاصله ها هم توش بره
مشکل اصلی من هوز حل نشده :گریه: چیکار باید انجام بدم تا با هر بار تکرار حلقه for اطلاعات قبلی به فایل بره