المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : سؤال بسيسسط في ال C++



snake_x86
16-04-2005, 12:20 AM
السلام عليكم و الرحمة.......
أقوم بعمل برنامج على السي بلس بلس يقرأ ملف و يقوم بعمليات معينة

و هذه كود كمثال للطريقة اللتي أقوم بفتح الملف فيها:









#include <iostream>



#include <strings>

#include <fstream>

using namespace std;


void main(){

ifstream inputfile;

string filename;

cout << "enter file name\n";

cin >> filename;


inputfile.open(filename);


bla bla bla


filename.close()

}





و المشكلة هنا أنني لا أستطيع فتح الملف بإعطائه عنوان الملف عن طريق متغير
أي إقتراحات؟

و لدي سؤال أخر عن طريقة استخدام ال
Get
و
put
كالتي في الفيجوال بيسيك
:biggthump وشكراً

snake_x86
16-04-2005, 12:43 AM
و هذه الإرور التي يعطيني إياها:



error C2664: 'void __thiscall std::basic_ifstream<char,struct std::char_traits<char> >::open(const char *,int)' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator
<char> >' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called


علماً أن البرنامج يعمل عندما أقوم بكتابة نص فتح الملف بالطريقة التالية:



filename.open("C:\file.dat")



أي عندما أعطيع ال path مباشرة

immortal32
16-04-2005, 03:50 PM
للأسف الي تسويه بفتح الملف خطأ

اذا كان عندك 4 ملفات:
in_file1.txt , in_file2.txt , in_file3.txt , in_file4.txt


to open the one you want you should do this:

ifstream file1 , file2 , file3 , file4;
string name_file;
cout<<"Enter file name> ";
cin>>name_file;

if(name_file == "in_file1.txt")
{
file1.open("in_file1.txt");
if(file1.fail())
{
cerr<<"CANNOT OPEN THE FILE"<<endl;
exit(1);
}
}
else if(name_file == "in_file2.txt")
{
file2.open("in_file2.txt");
if(file2.fail())
{
cerr<<"CANNOT OPEN THE FILE"<<endl;
exit(1);
}
}
else if(name_file == "in_file3.txt")
{
file3.open("in_file3.txt");
if(file3.fail())
{
cerr<<"CANNOT OPEN THE FILE"<<endl;
exit(1);
}
}
else if(name_file == "in_file4.txt")
{
file4.open("in_file4.txt");
if(file4.fail())
{
cerr<<"CANNOT OPEN THE FILE"<<endl;
exit(1);
}
}
else
{
cout<<"FILE NAME NOT MATCH"<<endl;
exit(1);
}


i think this way you will not have a problem opening the file




لازم تأخذ بعين الإعتبار ان الملف موجود في نفس المكان الموجود فيه البرنامج


بالنسبة لــ
get
هذا امر يخليك تقرأ حرف واحد

put
هذا امر يخليك تكتب حرف واحد




اذا عندك اسألة ثانية لاتستحي انا في الخدمة

snake_x86
17-04-2005, 12:56 AM
مشكور على ردك بس انت ما فهمت قصدي بالسؤال:D

و قصدي هو أنه : اقدر أفتح الملف بإعطائه ال path عن طريق variable ؟؟؟؟؟؟؟
يعني آخذ ال path مال الملف من اليوزر أو من argument!!!!
و قصدي أني ما أعرف اسم الملف مسبقاً


و السؤال الثاني قصدي كيف استخدم ال get و ال put أعرف شو بسوو بس ما أعرف
كيفية استخدامهم



File1.get(?????????????)
File1.put(?????????????)