במאמר זה תלמדו על הפונקציה 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
הֶסבֵּר:
- משתנה מחרוזת בשם 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; }
תְפוּקָה:
הסבר:
- בדוגמה זו, המשתמש מתבקש להזין ערכי מחרוזת להמרה.
- האפליקציה תמשיך לקבל קלט משתמש עד שהמשתמש יזין 'יְצִיאָה' באמצעות לולאת while.
- נכנסים 'יְצִיאָה' גורם לתוכנית זו להדפיס הודעת פרידה ולסיים את הלולאה.
- אם לא, הוא מנסה להשתמש std::stol כדי להמיר את הקלט ל-long.
- הערך המומר מודפס אם ההמרה הצליחה.
- הוא תופס חריגים (ארגומנטים לא חוקיים, מחוץ לטווח), מדפיס הודעת שגיאה וממשיך.
- בזמן שהוא ממתין לקלט משתמש חדש, הלולאה עוברת לאיטרציה הבאה.