פורסם 2009 בספטמבר 2416 שנים ברצוני לפתוח קובץ טקסט בויזואל 2005 הבעיה היא שהוא נמצא בתקייה איפה שכל קבצי הH וcppניסיתי את הפונקציה getcwd_ הבעיה היא שהאובייקט של פתיחת הקובץ דורש שהpath יראה משהו מהצורהc:\\documents\\temp\\b.txt ואילו הgetcwd_ מחזיר לי את הדרך רק עם סלאש אחד
פורסם 2009 בספטמבר 2416 שנים אתה לא צריך להכניס נתיב מלא אם אתה רוצה לטעון קובץ שנמצא בתיקיה הנוחכית שלך (או בPATH), מספיק להכניס רק את שם הקובץ
פורסם 2009 בספטמבר 2416 שנים מחבר הבעיה היא כשאני בודק האם הקובץ נפתח בהצלחה ע"י הפונקציה is_open הוא רושם שהקובץ לא נפתח בהצלחהכשאני רושם רק את שם הקובץ
פורסם 2009 בספטמבר 2516 שנים בדרך כלל הספריה הנוכחית היא איפה שנמצא ה-executable ולא בתיקיה עם קבצי ה-cpp וה-h.
פורסם 2009 בספטמבר 2516 שנים מחבר אולי לא הייתי ברור, הקובץ טקסט נמצא באותה תקיה איפה קבצי הCPP והH, יש למשהו רעיון איך אני מקבל את ה"path" שבו הקובץ הזהנמצא?
פורסם 2009 בספטמבר 2516 שנים איך אתה מצפה שהתוכנה תדע איפה נמצא קובץ כלשהו על המחשב שלך?אחרי הקומפילציה, אין קשר יותר בין קובץ ה-exe וקבצי ה-h/cpp. אי אפשר לדעת איפה נמצאים הקבצים שמהם קומפלה התכנית (כי כמובן אפשר היה להזיז אותם בינתיים).
פורסם 2009 בספטמבר 2516 שנים מחבר כנראה שלא הסברתי את עצמי כמו שצריך או שלא הבנתם אותי נכוןאני רוצה לכתוב את המשחק DIGGER(דרך הCONSOLE ככה הולך התרגיל)אחת הדרישות שם היא שיהיה קובץ שיקרא board.txt וכשהתוכנית תרוץ המשתמש יראה את הboard (הלוח שנמצא בקובץ)בשביל לפתוח את הקובץ לקריאה הגדרתי את האובייקט ifstream שהוא מקבל מחרוזת(מחרוזת שמייצגת איפה הקובץ נמצאלדוגמא: C:\\myProg\\borad.txt עכשיו הבעיה שלי כשאני משתמש בפונקציה הgetcwd_ היא מחזירה לי את הערךC:\myProg\borad.txt האם יש פונקציה או דרך כלשהי לקבל את המחרוזת בצורה הזאת: C:\\myProg\\borad.txtאני מקווה שעכשיו זה קצת יותר ברורתודה על העזרה
פורסם 2009 בספטמבר 2516 שנים לא נראה לי שהבנת את המשמעות של ה-\\כשאתה יוצר מחרוזת ככה:string path = "c:\\myProg\\board.txt";אז למעשה המחרוזת מכילה את הטקסטc:\myProg\board.txtלמה צריך פעמיים סלאש? כי סלאש הוא escape character, שנועד להציג תווים מיוחדים (לדוגמה, n\ שמציין סוף שורה ו-t\ שמציין טאב). מה קורה אם אתה רוצה לכתוב את זוג התווים "n\"? אם תכתוב אותם סתם ככה, הקומפיילר יתייחס אליהם כאל התו היחיד שמייצג ירידת שורה. לכן אתה צריך לעשות escaping לסלאש עצמו, כלומר לשים שני סלאשים, כלומר "n\\". לכן, כל פעם שאתה רוצה לכתוב סלאש במחרוזת, צריך לשים שניים כאלה.כשאתה מדפיס את המחרוזת, היא תודפס רק עם סלאש אחד.הפונקציה getcwd_ מחזירה בכל מקרה רק עם סלאש אחד, וזה שקול למחרוזת שתכניס ידנית עם שני סלאשים. אתה מוזמן לבדוק בעצמך ע"י השוואת המחרוזות (strcmp).
פורסם 2009 בספטמבר 2516 שנים מחבר כתבתי את הקוד הבא char path[_MAX_DIR]; _getcwd (path, _MAX_DIR); string pathS=string(path); pathS+="\borad.txt"; std::ifstream myfile (pathS);אבל הוא נותן לי הודעה שיש המרת טיפוס בין string לבין char * בשורה האחרונה, איך ניתן לפתור את הבעיה הזאת?
פורסם 2009 בספטמבר 2516 שנים קודם כל, כמו שציינתי בהודעה הקודמת שלי, כשאתה רוצה לכתוב מחרוזת שמכילה סלאש, אתה חייב לשים אותו פעמיים.חוץ מזה, ifstream מקבל פרמטר מטיפוס *const char ולא string. אתה צריך לעשות להשתמש בפונקציה c_str, כלומר: pathS+="\\borad.txt"; std::ifstream myfile (pathS.c_str());
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.