logo

פונקציית std::stol ב-C++

במאמר זה תלמדו על הפונקציה std::stol ב-C++ עם התחביר והדוגמאות שלה.

מה זה std::stol()?

ה ספריית תבניות רגילה (STL) ב-C++ כולל את std::stol() פונקציה, המיועדת במיוחד להמרה מחרוזות למספרים שלמים ארוכים . פונקציה זו מועילה במיוחד כאשר עובדים עם קלט משתמש או קריאת נתונים ממקורות חיצוניים - כאשר הקלט בדרך כלל ניתן בפורמט מחרוזת. הוא מחזיר את המספר השלם הארוך המקביל לאחר קבלת מחרוזת כקלט. חריג מסוג std::invalid_argument או std::out_of_range נזרק אם ההמרה אינה אפשרית או אם מחרוזת הקלט מכילה תווים שאינם חלק ממספר חוקי.

תחביר:

יש לו את התחביר הבא:

long std::stol(const std::string& str, size_t* pos = 0, int base = 10);

str: הטקסט שצריך לשנות למספר שלם ארוך.

מי הוא urfi javed

מיקום: האינדקס של התו הראשון שלא הומר של המחרוזת, מאוחסן כמצביע לאובייקט size_t. אם זה לא נדרש, ניתן להגדיר את הפרמטר האופציונלי הזה ל-nullptr.

בסיס: הבסיס המספרי של ההמרה. עשר הוא ברירת המחדל.

ערך החזרה: הערך המספרי שמנותח ממחרוזת הקלט מוחזר על ידי הפונקציה כמספר שלם ארוך.

חריגים: הפונקציה זורקת חריג אם לא ניתן להשלים את ההמרה או אם התווים במחרוזת הקלט אינם חוקיים. אם לא ניתן לבצע המרה, החריגים האפשריים הם std::invalid_argument ו std::out_of_range אם הערך המומר גדול מהטווח שניתן לייצוג לטווח ארוך.

מקרי שימוש:

    עיבוד קלט על ידי משתמשים:

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

    קובץ קלט/פלט:

קריאת נתונים מספריים בקבצים המכילים מחרוזות כייצוג הנתונים.

aws היסט לאדום
    אימות מידע:

אימות נתונים כולל אישור שהקלטות המשתמש מייצגות במדויק מספרים ארוכים על ידי אימות ואימות שלהם.

דוגמה לתוכנית 1:

ניקח דוגמה כדי להמחיש את השימוש ב std::stol function ב-C++.

 #include #include int main() { std::string numStr = '12345'; try { long result = std::stol(numStr); std::cout << 'Converted value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Invalid argument: ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Out of range: ' << e.what() << std::endl; } return 0; } 

תְפוּקָה:

arraylist ו-linkedlist
פונקציית std::stol ב-C++

הֶסבֵּר:

    אתחול:
    • משתנה מחרוזת בשם numStr אתחול עם הערך '12345' בתחילת התוכנית.
    נסה לחסום:
    • הקוד עובר לבלוק try, מסמן שהוא ינסה להפעיל את ההצהרות הכלולים בתוכו. חריגים פוטנציאליים מטופלים כאן.
    ניסיון המרה:
    • התוכנית מנסה להשתמש std::stol() כדי להפוך את המחרוזת numStr למספר שלם ארוך בתוך בלוק try.
    המרה אפקטיבית:
    • התוצאה נשמרת בתוצאה המשתנה אם ההמרה מצליחה.
    ערך מומר פלט:
    • המספר שהומר בהצלחה מודפס לאחר מכן לפלט הסטנדרטי על ידי התוכנית.
    טיפול בחריגים:
    • אחד מבלוק ה-catch מטפל בכל חריגים המתעוררים במהלך ההמרה.
    חריג לתפיסת טיעון לא חוקי:
    • הודעת שגיאה המציינת שהארגומנט אינו חוקי מודפסת אם החריג הוא מהסוג std::invalid_argument.
    חריג לתפיסה מחוץ לטווח:
    • הודעת שגיאה המציינת שתוצאת ההמרה היא מחוץ לטווח החוקי מודפסת אם החריג הוא מהסוג std::out_of_range.
    מדיניות החזרה:
    • התוכנית מחזירה 0 למערכת ההפעלה, מסמלת ביצוע מוצלח, והפונקציה הראשית מסתיימת.

בקיצור, הקוד מנסה להשתמש ב- std::stol() פונקציה בתוך בלוק try כדי להמיר את המחרוזת '12345' למספר שלם ארוך. התוצאה מודפסת אם ההמרה הצליחה. הוא לוכד חריגים ומדפיס את הודעת השגיאה הרלוונטית במקרה שתופיע (או בגלל ארגומנט שגוי או בגלל שהתוצאה מחוץ לטווח).

לבסוף, התוכנית מחזירה 0, מה שמסמל סיום מוצלח.

דוגמה לתוכנית 2:

ניקח דוגמה נוספת כדי להמחיש את השימוש std::stol function ב-C++.

 #include #include int main() { std::cout << 'Enter numeric strings to convert to long integers (type 'exit' to end):
'; while (true) { std::string userInput; std::cout <> userInput; if (userInput == 'exit') { std::cout << 'Exiting program. Goodbye!
'; break; } try { long result = std::stol(userInput); std::cout << 'Converted Value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Error: Invalid argument in input '' << userInput << '': ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Error: Out of range for input '' << userInput << '': ' << e.what() << std::endl; } } return 0; } 

תְפוּקָה:

פונקציית std::stol ב-C++

הסבר:

  • בדוגמה זו, המשתמש מתבקש להזין ערכי מחרוזת להמרה.
  • האפליקציה תמשיך לקבל קלט משתמש עד שהמשתמש יזין 'יְצִיאָה' באמצעות לולאת while.
  • Std::cin משמש בתוך הלולאה לקריאת קלט המשתמש.
  • נכנסים 'יְצִיאָה' גורם לתוכנית זו להדפיס הודעת פרידה ולסיים את הלולאה.
  • אם לא, הוא מנסה להשתמש std::stol כדי להמיר את הקלט ל-long.
  • הערך המומר מודפס אם ההמרה הצליחה.
  • הוא תופס חריגים (ארגומנטים לא חוקיים, מחוץ לטווח), מדפיס הודעת שגיאה וממשיך.
  • בזמן שהוא ממתין לקלט משתמש חדש, הלולאה עוברת לאיטרציה הבאה.