עבור לתוכן

עזרה: חיפוש בקובץ- C++

Featured Replies

פורסם

שלום חברה.

אני צריך עזרה בחיפוש בקבצים (files - fstream)

אני בעיקרון צריך למצוא "אות", ולהכניס במקומה אות אחרת.

אשמח לעזרה, תודה!

  • תגובות 40
  • צפיות 4k
  • נוצר
  • תגובה אחרונה
פורסם

מה עשית עד כה?

לקרוא קובץ אתה יודע?

פורסם
  • מחבר

יש לי כבר את התוכנית. הזנתי כמה שורות לקובץ (txt) , אני רק צריך לחפש בקובץ אות מסוימת, ולהחליץ אותה באות אחרת, ואני לא יודע איך לעשות את זה.

פורסם

אין באמת דרך "חכמה" לעשות את זה.

איך היית עושה את זה אם היה מדובר במערך של תווים?

פורסם
  • מחבר

אני אשאל ככה, יש רק אפשרות להשיג את המקום(שהפוינטר מצביע עליו) של תו מסוים בטקסט?

פורסם

לא.

בקובץ אתה יכול לעשות בדיוק שלוש פעולות בסיסיות: לקרוא מידע מהמיקום הנוכחי, לכתוב מידע למיקום הנוכחי, ולקבל או לקבוע את המיקום הנוכחי בקובץ.

פה יש תיעוד מלא עם דוגמאות:

http://www.cplusplus.com/doc/tutorial/files/

פורסם
  • מחבר

זה הקוד שלי בעיקרון - אני בעיקרון רוצה למחוק את השורה שיש בה את האות, ולהכניס שורה חדשה אחרי שעשיתי שינוי (לאותו מקום בטקסט כמובן)


#include<iostream>
#include<string>
#include<fstream>
using namespace std;


int main()
{
string str;


fstream nf("lamed.txt");
while(!nf.eof())
{
getline(nf,str);
for(int i=0; i<str.size();i++)
{
if(str[i]=='p')
{


str[i]='7';


}

}
}







return 0;
}

פורסם

אם אתה צריך להחליף רק אות אחת, למה למחוק שורה שלמה?

fstream מספקת לך פונקציות לקריאה וכתיבה של אותיות בודדות (get ו-put).

יש ל-fstream גם פונקציה בשם ignore, אני מציע לך לקרוא את התיעוד שלה (למרות שאתה לא באמת צריך אותה, היא תחסוך לך בערך שתי שורות קוד).

פורסם
  • מחבר

לא ממש הבנתי אותך

בעיקרון הוא מעתיק שורה שורה לתוך המחרוזת ואז מצבע בדיקה.

אם יש התאמה, הוא משנה את המחרוזת, בכך שהוא מציב את האות המבוקשת במקום שהאות שאני רוצה למחוק.

השאלה פה בתוכנית, איך אני משבץ את המחרוזת למקום שהיא נלקחה ממנו בתוך הטקסט, תודה!

פורסם

שוב: אם אתה רק צריך לשנות תו בודד, אין סיבה לקרוא שורה שלמה.

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

נתתי לך לינק עם הסברים, ואמרתי לך להשתמש בפונקציות get ו-put.

פורסם
  • מחבר

לא ממש הצלחתי להבין את השימוש שלהם( או איך משתמשים בהם) אפשר קצת עזרה? תודה

איך אני אמור לסרוק את הטקסט איתם ולהחליף אות?

פורסם

הפונקציה get קוראת תו בודד מהקובץ. היא לא מקבלת פרמטרים ומחזירה את התו שנקרא.

הפונקציה put כותבת תו בודד לקובץ. היא מקבלת כפרמטר תו אחד וכותבת אותו לתוך הקובץ.

שתי הפונקציות מקדמות את המיקום בקובץ ב-1 (ככה שאם תקרא כמה פעמים ל-get, אז כל קריאה תחזיר את התו הבא בתור).

קודם כל תחשוב איך משתמשים ב-get כדי למצוא את התו שאתה רוצה למצוא.

אם עדיין לא הבנת איך להשתמש בהן, בלינק שנתתי ל-put יש דוגמה די ברורה בסוף.

פורסם
  • מחבר

תודה הצלחתי לזוז עם הפונקציה get(). אבל לא ממש הבנתי איך אני משתמש ב put() כדי שהוא יכניס לי את האות במקום שאני רוצה בטקסט. (מן הסתם לאן ש get() הגיע בדיוק)

תודה!

פורסם

put פועלת בדיוק הפוך מ-get: במקום לקרוא את התו הבא, היא כותבת אותו.

אתה יכול להשתמש ב-seekp כדי להזיז את המצביע בקובץ. היא יכולה להזיז לפי מיקום גלובאלי (ביחס לתחילת או סוף הקובץ) או לפי מיקום יחסי (כלומר ביחס למיקום הנוכחי).

תעלה את הקוד שכתבת עד כה.

פורסם
  • מחבר



#include<iostream>
#include<string>
#include<fstream>
using namespace std;


int main()
{

fstream nf("lamed.txt");
while(!nf.eof())
{
char x=nf.get();

if(x=='s')
nf.put('N');
}
return 0;
}

זה משום מה לא עובד לי..

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים