פורסם 2005 ביוני 2020 שנים שלום !ברצוני לחלץ מספר ממחרוזת אך הדבר לא עולה בידי.להלן 4 אפנים בהם ניסיתי לבצע והשגיאות שהעליתי בחכתי:נסיון 1, דרך מצביע למערך:#include <cstdlib>#include <iostream>using std::cout;#include <string>using std::string;#include <cstring>int main(){ char *myDrink = "Coffee 4 2"; int myD4 = myDrink[7]; cout << "\nmyD4 is: " << myD4; // i get 52 ! return 0;אני מקבל 52 במקום 4 !נסיון 2, מערך מסוג charchar yourDrink[10] = "Coffee 4 2"; int yourD4 = yourDrink[7]; cout << "\nyourD4 is: " << yourD4; // i get 52 !גם במקרה זה אני מקבל 52 במקום 4.ניסיון מס. 3 עבודה עם משתנה מסוג string:string ourDrink = "Coffee 4 2"; int ourD4 = ourDrink.substr(7,1); // cannot convert 'string' to 'int'המהדר מפיק את הודעת השגיאה הבאה: cannot convert string to intניסיון מס. 4: שימוש ב atoi:string ourDrink = "Coffee 4 2"; int ourD4 = atoi(ourDrink.substr(7,1)); // could not find a match to atoiהמהדר מפיק הודעת שגיאה: couldnt find a match to atoiמישהו יכול לתקן את הקוד שכתבתי או להפנות אותי לסוג אחר של קוד באופן שאצליח לחלץ את המספר מהמחרוזת ?תודה !
פורסם 2005 ביוני 2020 שנים כי אתה מנסה להדפיס את התו בתור INT, כלומר אתה מדפיס את ערך הASCII שלו. אתה צרוך להוריד '0' כל פעם, לדוגמה:myD4 = myDrink[7]-'0';
פורסם 2005 ביוני 2120 שנים cout מקבל בעצם משתנה מטיפוס אינטג'ר ולכן חושב שהוא צריך להדפיס את הערך המספרי של התו '4' שהוא כנראה 52 בASCIIתנסה אולי לרשום ככה:cout << "\nmyD4 is: " << (char)myD4;או להגדיר את myD4 כ-char ולא אינטג'ראו לעשות מה ש-Ghosthunter אמר
פורסם 2005 ביוני 2120 שנים מחבר ואם אני רוצה לבצע פעולה אלגברית, למשל :myDrink[7] + myDrink[9]עלי להפכם ל int הלא כן ?הבעיה שלי איננה cout אלה כיצד לקבל ערכי int מתוך מחרוזת.
פורסם 2005 ביוני 2120 שנים atoi מוגדרת ב- stdlib.h.אתה יכול גם להשתמש בפונקציית sscanf או בקלאס strstream כדי לקרוא מחדש את ה- string ולפרוס אותה מחדש איך שאתה רוצה.
פורסם 2005 ביוני 2220 שנים בכל מקרה, טריק נחמד כדי להפוך מספר מchar לint הוא לחסר מהתו את '0' כמו שGhosthunter הציעכלומר:myDrink[7]-'0' + myDrink[9]-'0'
פורסם 2005 ביוני 2320 שנים בכל מקרה, טריק נחמד כדי להפוך מספר מchar לint הוא לחסר מהתו את '0' כמו שGhosthunter הציעכלומר:myDrink[7]-'0' + myDrink[9]-'0'זה רק עבור 2 ספרות, וזה צריך ללכת כך:myDrink[7]-'0' + 10*(myDrink[8]-'0')כדי להפוף למספר.על מבוסס ה atoi. יש פונ גם לFLOAT, אבל אני לא זוכר אותה.. תחפש בMSDN אם זה מעניין אותך.
פורסם 2005 ביוני 2320 שנים מחבר חסכת לי פתיחת אשכול נוסף. בהחלט התבקשה פה השאלה כיצד מקבלים מספר בן יותר מתו אחד. תודה !
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.