לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 26-08-2007, 18:38
  משתמש זכר eXtruct eXtruct אינו מחובר  
 
חבר מתאריך: 27.10.05
הודעות: 1,067
עבודה עם קבצים ב C++

שלום לכולם,
להפתעתי הרבה גיליתי שאני לא כל כך יודע לעבדו עם קבצים שזה דבר די פשוט וחיוני בכל תוכנה.
עד הום עבדתי עם קבצים ב C סטייל, כעט אני רוצה לעבור ל C++ סטייל ואני תוהה איפה ניתן לקרוא על זה, אני מתכוונן למחלקות שעובדות עם קבצים ב C++.

כמו כן הבעיה שבגללתי פתחתי את הנושא:
אני רוצה ליצור מחלקה שתעבוד עם קבצי config שאני אקבע את הסגנון שלהם, אחת הפונצקיות של המחלקה אמורה לקבל פרמטר ולהחזיר את הערך שלו מקבוץ ה config, כלומר אם הקונפיג נראה כל:
Parameter1 = Value1
Paramater2 = Value2
....
והפונקיה תקבל Parameter1 היא תחזיר Value1.
כמו כן רציתי גם לדעת איך ניתן לעשות שהמחלקה כשאר היא קוראת שורה היא תתעלם מ comments שתחילו בסימן כל שהוא שאני אקבע (נניח כמו ב C++, /* */)
אפשר אולי איזה הכוונה, או מדריך או לא יודע מה שיעזור לי לפחות להתחיל כי אין לי מושג איך לכתוב את זה בצורה נכונה ויעליה שזה גם דיי חשוב.

תודה רבה ושבוע טוב לכולם.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 01-09-2007, 19:44
  Dark Knight Dark Knight אינו מחובר  
 
חבר מתאריך: 30.07.05
הודעות: 949
שלח הודעה דרך ICQ אל Dark Knight
בתגובה להודעה מספר 1 שנכתבה על ידי eXtruct שמתחילה ב "עבודה עם קבצים ב C++"

עבודה עם קבצים ב-++C שונה במידה מה מזו של C...
הגישה של ++C לתכנות היא שונה מלחתחילה, ובין אם אתה עובד עם קובץ או עם קלט - הגישה זהה למדי ומתייחסת לאובייקט stream.

לעבודה עם קבצים אני ממליץ על הספריות:
<fstream>, <iostream>, <iterator>
ולהוסיף מיד להתחלה:
קוד:
using std::cin; using std::cout; using std::endl; using std::ifstream; using std::ofstream; using std::istream_iterator; using std::ostream_iterator;


כעת יש 2 גישות עקרוניות לעבודה:
1) איטרטורים על ה-stream
2) אופרטורי קלט\פלט.

נתחיל עם איטרטור, זה די פשוט.
בסופו של דבר מהרגע שהגדרת לך איטרטור אתה מסתכל על הקובץ כאילו הוא אוסף של עצמים מסוג מסויים: string, int, double, char או עוד טיפוסים כאלו ואחרים שיודעים לעבוד עם האופרטורים הללו.
אתה מאתחל לך איטרטור לתחילת הקובץ ומאז עובד איתו כאילו היה פויינטר לסוג המסויים:
קוד:
ifstream file(FileName); istream_iterator<double> step(file); istream_iterator<double> eof; //Since not initilized, points to EOF double x=*step++; // x is now set to the first double element in the file and step will advance to the next. while (step != eof) { x+=*step++; } cout<<"The sum of the file is: " << x << endl;

זה שימוש פשוט של איטרטור ע"מ לעבור על קובץ. כמובן שאיטרטור אפשר ליצור גם עבור string או char, תלוי בצורך שלך...
היתרון בשיטה הזו הוא שהיא קודם כל מאד פשוטה ואינטואיטיבית, בנוסף אנומליות בקובץ לא יגרמו לך לצרות מיותרות.


עכשיו הצורה הפשוטה יותר לעבודה, אבל זה יכריח אותך להכיר היטב את המבנה של הקובץ:
שימוש באופטרטורים >> <<

קוד:
ifstream file(FileName); ofstream file2(FileName2); char c(0); //would work with anything, stings and numbers too while (c != //sorry, dont remmember :-( ) { file >> c; //Read a char from the first file file2 << c; //Write the read char to the 2nd file }


עכשיו, בקשר לבעיה שלך עם קובץ INI, אז יש פה כמה אפשרויות. לדוגמא:

קוד:
function ReadInI(char* fINI) { ifstream ini(fINI); char eq('='); string strBuff(""); //Will be used for generic purposes. ini >> strBuff; //The INI file should begin with [Dir] /* Validate Format and Do something with the directory name... */ ini >> strBuff; while (strBuff != EOF) { /* Do something with the parameter name */ ini >> eq; if (eq != '=') throw("Wrong Format"); ini >> strBuff; if (strBuff == EOF) throw("Wrong Format"); /* Do something with the Param Value */ ini >> strBuff; } }

רק שים לב שצריך להגדיר מה זה EOF, כי אני לא זוכר

זהו, עד כאן נסיוני הדל בעבודה עם קבצים ב-++C. מקווה שעזרתי
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.


נערך לאחרונה ע"י Dark Knight בתאריך 01-09-2007 בשעה 19:49.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 19:20

הדף נוצר ב 0.05 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר