עבור לתוכן

ב ++C, איך הופכים תו מספרי לתו קרקטריאלי ?

Featured Replies

פורסם

ברצוני להדפיס מספר כ string ואינני יודע איזו פונקציה ב ++C עושה זאת.

אודה למי שיעזור לי בנושא.

פורסם

אני לא חושב שיש פונק' כזו, אבל למה שלא תכתוב אחת כזו בעצמך?

אם אתה רוצה להמיר ספרה לתו, פשוט תוסיף לה את '0' ואז קיבלת את התו שמתאים לספרה. עכשיו נשאר רק לכתוב לולאה שמשתמשת בזה כדי להמיר מספר שלם לchar*

פורסם
  • מחבר
:)
פורסם

ע"י שימוש בפונקציה itoa שנמצא ב-stdlib.h בסינטקס הבא

char* itoa(int value, char *string, int radix);

כאשר radix הוא הבסיס שאתה עובד בו (במקרה הרגיל 10), value הוא המספר והתוצאה תוצב לתוך string (שתפקידך לדאוג שיהיה מספיק גדול)

פורסם

הבעיה בפונקציה הזו שהיא לא ANSI, כלומר לא בסטנדרט של C.

עוד בעיה בפונצקיה שההתנהגות שלה לא צפויה.

למשל אם תתן לה את המחרוזת "123hello" אז היא תחזיר לך את המספר 123 ולא שגיאה. כלומר תצטרך לבצע בדיקות קלט מראש.

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

פורסם
  • מחבר

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

העיקר שהתכנית עברה הידור.

פורסם

לא הבנתי מה קשורה sprintf.

ואני ממליץ לך להתייחס לכל warning בתור error ותמיד לקמפל כל דבר עם דרגת ה warnings הכי גבוהה שאפשר.

זה לפחות מה שידרש ממך בכל מקום שתבוא אליו ללמוד תכנות ברמה גבוהה.

פורסם

אם אתה סתם רוצה להדפיס מספר אתה פשוט עושה:

cout << i;

אם אתה רוצה להמיר אותו ל string אפשר בצורה דומה אבל במקום cout משתמשים ב ostringstream

ostringstream myos;
myos << 777678;
myos.str;() מחזיר string של C++

אם אתה מתכנת ב C++ תיקני אני ממליץ להשתמש בספרית ה IOStreams שלה ולא בספריה של C, כי היא יותר בטוחה (פחות void *)

פורסם

לא הבנתי מה קשורה sprintf.

sprintf עובד כמו printf רק שהוא מקבל בתור פרמטר buffer (מסוג char*) ומדפיס את מה שאתה רוצה לתוך ה-buffer במקום למסך.

כך אתה יכול "להדפיס" מספר לתוך מחרוזת

פורסם
  • מחבר

#include <iostream>

using std::cout;

using std::cin;

using std::endl;

#include <stdio>

char *retChar(int);

void main()

{

char *myChar = retChar(987654);

for(int i = 0;i < sizeof(myChar);i++)

cout << myChar;

}

char *retChar(int myInt)

{

char c[18]; //simply large enough -

sprintf(c, "%d", myInt);

return c;

}

פורסם

אתה סתם עושה עבודה מיותרת ומאריך את הקוד. הנה השיטה הסטנדרטית:

#include <iostream>
#include <sstream>

int main()
{
std::ostringstream myos;
myos << 987654;

std::string s = myos.str();
//s gets a copy of the buffer string in myos

std::cout << myos.str() << std::endl;
}

פורסם

יישור לשמאל כמו שצריך עושים ככה

[left][ltr]text bla bla text[/ltr][/left]

אין כפתור שעושה את זה, פשוט צריך לזכור (אל תשאלו אותי למה)

פורסם

הלינק קצת ארוך אבל מגיע ל wiki עם הסברים איך להתקין ולהשתמש.

http://wiki.mozilla.org.il/index.php/%D7%9B%D7%99%D7%95%D7%95%D7%A0%D7%99%D7%95%D7%AA_%D7%93%D7%A3

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

פורסם

מה הקשר?

פורסם
  • מחבר

תודה רבה !

:)

ארכיון

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

דיונים חדשים