עבור לתוכן

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

Featured Replies

פורסם

הצבתי את המחרוזת "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

פורסם

משום מה (הפתעה) בתוך הCSring יש CLASS שמגדיר מחרוזת...

פורסם

טוב... הגיוני. הפונקציות כבר היו קיימות ב-string.h, אז לא היה טעם לכתוב את ה-operator== בשלמותו, יותר הגיוני פשוט לקרוא באמצעותו לפונקציה strcmp...

פורסם
  • מחבר

רוב תודות !

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

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

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

פורסם

CString זה לא ++C סטנדרטי... זה MFC. ל- ++C יש class שבאופן מפתיע קוראים לו string..

#include <string>

#include <iostream>

using namespace std;

void main()

{

string str = "Hello World";

if (str == "Hello World")

cout << str;

}

ארכיון

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

דיונים חדשים