2015-04-13 2 views
1

У меня есть функция, которая возвращает char* (имя). Мне нужно проверить, совпадает ли имя с именем, которое я вводил при запуске программы. Итак, как я могу сравнить указатель на char и массив char? (Это часть школьного задания)Сравните char [] и char *

+2

Вы хотя бы попытались найти ответ на этом сайте? – Predelnik

ответ

5

Использование зЬгстр как

char a[] = "someName"; 
char* b = GetSomeOtherName(); 
if (strcmp(a, b) == 0) 
{ 
    // equal 
} 
+0

спасибо, я попробую это :) – hugsy21

9

В C++, вы бы вернуться std::string не char*, и сравнить с

if (returned == expected) 

Если вы пытаетесь чтобы написать ужасную смесь C и C++, тогда вы могли бы либо сделать строку для сравнения:

или использовать библиотеку C

if (std::strcmp(pointer, expected) == 0) 
1

Вы можете использовать strcmp() из <cstring> заголовка, как

if (strcmp (func() , a) == 0) 
{ 
    // they are equal 
} 

где func() возвращает указатель и a является массив вашего характера.

Но, находясь на C++, вы должны использовать std::string. Это намного лучше, чем массивы символов.

Это действительно легко проверить строки для равенства. Вы могли бы просто сделать

std::string string1; 
std::string string2; 

// assign them some values 

if (string1 == string2) 
{ 
    // they are equal 
}