שאלת IO ב++C:

nahsh

New member
שאלת IO ב++C:

האם יש אפשרות לקבוע את מספר התווים הנקראים ע"י cin? אני רוצה לקרוא מסטרים, צמד תווים בכל פעם, המייצגים ערך הקסה דצימלי של בית אחד. בC זה היה משהו כזה:
while (...) { scanf("%2X", &Byte); }​
תודה!
 

nahsh

New member
מישהו יודע בכל זאת?

פשוט ההודעה נמוכה מדי עכשיו...
 

voguemaster

New member
אתה יכול

לעבוד עם get ו-read. ספציפית read היא פונק' של cin (מתוך היותו istream) ואפשר לקרוא לה. אפשר גם לעבוד עם get על אחת מגרסאותיה ובגלל שהיא מחזירה istream& גם יש אפשרות לעשות את זה בשורה אחת:
cin >> get( buffer, sizeof( buffer));​
מקווה שלא טעיתי בכיוון של ה-<<, אני תמיד מתבלבל
 

Flexibal

New member
למה?

למה כולם אוהבים להשתמש ב cin, cout וכו? נעזוב תחביר בלתי נסבל... למה בכלל צריך את זה? כל מה שצריך נמצא בפונקציות ה LOW LEVEL של io.h.
char buf[] = {0,0,0}; int x; while( !eof(fh) ) { _read(fh, buf, 2); x = atoi(buf, 2, 16); // dont remember the exact syntax }​
חוצמזה, כל הפונקציות העיליות ממומשות על גבי אלה הנמוכות, אז למה להכניס סתם רמות של abstraction, כאלה מספיקות? -תומר
 

eyalbd

New member
ככה

כי בהרבה מקרים iostreams הרבה יותר קלים. את הדוגמא שלך אפשר בקלות לכתוב כך
char buf[] = {0,0,0}; int x; while( cin.read(buf, 2) ) { // x = convert to int with strtol() }​
 

voguemaster

New member
מעבר לכך

חוץ ממה שאייל כתב לך, רמות האבסטרקציה שאתה מזכיר לא ממש קריטיות. גם ככה פעולות IO הן משמעותית יותר איטיות מכל דבר אחר (כמעט) אז בין לעשות read או להשתמש ב-cin זה כבר ממש לא משנה
 
למעלה