עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

כל נסיונותי להפוך מחרוזת למספר ב ++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 בראשון לא בשני).

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.