c++ קשיים בנושא string - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

c++ קשיים בנושא string


pssheba

Recommended Posts

הצבתי את המחרוזת "Hello world" במערך באופן הבא:

char *myArray[20] = {"Hello world"};

ברצוני לבדוק את תוכן המערך כך:

if (*myArray == "Hello world")

cout << "Hello world";

else

cout << "Good bye world";

אני מקבל "Good bye world" כלומר, אף על פי שהצבתי "Hello world" ה if מוצא שזו איננה המחרוזת המוצבת במערך?

הטעות לדעתי נובעת מ if לא נכון.

מישהו יכול להראות לי איך כותבים נכון את הif כך שאקבל "Hello world" ולא "Good bye workd" ?+

קישור לתוכן
שתף באתרים אחרים

אם אתה מגדיר

char* str[10]

אתה יוצר מערך של char-ים. אבל המשתנה str הוא מסוג char* - מצביע ל-char. מה שהוא מצביע עליו למעשה הוא לא הסטרינג, אלא האיבר הראשון שלו. שם מערך הוא בעצם מצביע לאיבר הראשון במערך.

מה שאתה צריך זה פונקציה שמקבלת שני פוינטרים ל-char. למרבה הנוחות, ב-string.h של שפת C יש בדיוק פונקציה כזאת, קוראים לה strcmp() והיא מוגדרת כך:

bool strcmp(char*, char*)

ומחזירה ערך בוליאני שאומר לך אם שני הסטרינגים זהים או לא. יש שם עוד כמה פונקציות שימושיות, כמו strlen() שמחזירה את אורך המחרוזת ודברים כאלה, חפש ב-MSDN בשביל פירוט מלא. זו ספרייה של שפת C, כאמור, ולכן כדי לכלול אותה בקוד אתה צריך את זה:

#include <cstring>

בהצלחה!

קישור לתוכן
שתף באתרים אחרים

#include <cstring>

היא ספריה של C++ שמגדירה טיפוס שנקרא CString וזה לא מה שאתה צריך.

מה שאתה צריך זה את הספריה string.h שאתה מצרף ע"י

#include <string.h>

בעיקרון אתה אומר לעשות ככה

#include <string.h>

char myArray[20] = "Hello world";

if (strcmp(myArray,"Hello world") == 0)

cout << "Hello world";

else

cout << "Good bye world";

או

#include <cstring>

CString = "Hello world";

if (myArray == CString("Hello world"))

cout << "Hello world";

else

cout << "Good bye world";

קישור לתוכן
שתף באתרים אחרים

דרך אגב הספריה cstring משתמשת בספריה string.h (עושה לה include) לכן אם יש לך קומפיילר של C++ ותעשה

#include <cstring>

הספריה cstring תדאג לצרף גם את כל הפונקציות שיש ב-string.h והתוכנית תעבוד בלי בעיה.

בקומפיילר של C לא קיימת הספריה cstring

קישור לתוכן
שתף באתרים אחרים

רוב תודות !

פיתרון פשוט למה שנראה לי מסובך.

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

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...