עבור לתוכן

כל נסיונותי להפוך מחרוזת למספר ב ++c עולים בתוהו

Featured Replies

פורסם

שלום !

ברצוני לחלץ מספר ממחרוזת אך הדבר לא עולה בידי.

להלן 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, מערך מסוג char


char 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

מישהו יכול לתקן את הקוד שכתבתי או להפנות אותי לסוג אחר של קוד באופן  שאצליח לחלץ את המספר מהמחרוזת ?

תודה !

פורסם

כי אתה מנסה להדפיס את התו בתור INT, כלומר אתה מדפיס את ערך הASCII שלו. אתה צרוך להוריד '0' כל פעם, לדוגמה:

myD4 = myDrink[7]-'0';

פורסם

cout מקבל בעצם משתנה מטיפוס אינטג'ר ולכן חושב שהוא צריך להדפיס את הערך המספרי של התו '4' שהוא כנראה 52 בASCII

תנסה אולי לרשום ככה:

cout << "\nmyD4 is: " << (char)myD4;

או להגדיר את myD4 כ-char ולא אינטג'ר

או לעשות מה ש-Ghosthunter אמר

פורסם
  • מחבר

ואם אני רוצה לבצע פעולה אלגברית, למשל :

myDrink[7] + myDrink[9]

עלי להפכם ל int הלא כן ?

הבעיה שלי איננה cout אלה כיצד לקבל ערכי int מתוך מחרוזת.

פורסם

atoi מוגדרת ב- stdlib.h.

אתה יכול גם להשתמש בפונקציית sscanf או בקלאס strstream כדי לקרוא מחדש את ה- string ולפרוס אותה מחדש איך שאתה רוצה.

פורסם
  • מחבר

אני מודה לך !

פורסם

בכל מקרה, טריק נחמד כדי להפוך מספר מchar לint הוא לחסר מהתו את '0' כמו שGhosthunter הציע

כלומר:

myDrink[7]-'0' + myDrink[9]-'0'

פורסם

בכל מקרה, טריק נחמד כדי להפוך מספר מchar לint הוא לחסר מהתו את '0' כמו שGhosthunter הציע

כלומר:

myDrink[7]-'0' + myDrink[9]-'0'

זה רק עבור 2 ספרות, וזה צריך ללכת כך:

myDrink[7]-'0' + 10*(myDrink[8]-'0')

כדי להפוף למספר.

על מבוסס ה atoi. יש פונ גם לFLOAT, אבל אני לא זוכר אותה.. תחפש בMSDN אם זה מעניין אותך.

פורסם
  • מחבר

חסכת לי פתיחת אשכול נוסף. :yelclap:

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

תודה !

פורסם

אופס... התבלבלתי.. זה צריך ללכת הפוך(ה*10 בראשון לא בשני).

ארכיון

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

דיונים חדשים