2016-02-04 2 views
-4

У меня есть массив строк 2d и строка, которую я бы хотел сравнить, но strcmp не работает, если я не передал строку в (const char *), и это приводит меня к seg неисправность.Сравнение 2d строкового массива со строкой C++

В настоящее время мой код упрощается:

string dog; 

cin >> dog; 

string cat[10][10]; 

//The cat array is then filled with values through cin 

//This is the troublesome part 

if (strcmp(cat[4][3].c_str(), dog[0]) == 0) { 
//do stuff 
} 

Получение адреса собаки с & собаки [0] работает, но тогда я получаю целое слово, что был введен в собаку, а не просто письмо, которое я хочу ,

Есть ли обходной путь для этого?

+1

Вот [какая-то документация] (http://en.cppreference.com/w/cpp/string/basic_string). Наслаждаться. – juanchopanza

+2

Если вы хотите сравнить только первый символ, вам не нужно 'strcmp'. Если вы хотите увидеть, находится ли этот единственный символ где-то в другой строке, используйте 'string :: find'. – paddy

ответ

0

string cat [10] [10];

// Массив кот затем заполняется значениями через КИН

// Это хлопотно часть

if (strcmp(cat[4][3].c_str(), dog[0]) == 0) { 
//do stuff 
} 

Это то, что я думаю, что происходит. Вы хотите создать строку cat [10], а не строку cat [10] [10]

Позвольте мне объяснить это сейчас. //cat[0] = это не займет «строка», он принимает массив из 10 строк [не строка из 10 символов, которые я думаю, что у ожидать)

cat[0][0] = "hello world"; 
//to access "h" letter you would need to use 
cat[0][0][0] and then do 

if (cat[0][0][0] != dog[0]) 

, который я думаю, что и хотят делать (сравнить письмо) в противном случае для сравнения строк просто

if (cat[0][0] != dog) //note that this is a case sensitive 
0

вы работаете с C++ std::string, который имеет перегруженный operator==, так что вам не нужно strcmp вообще. Если вы хотите увидеть, равны ли два string с, вы можете просто сделать cat[4][3] == dog. cat[4][3] является std::string, поэтому вы можете просто сравнить его с dog напрямую.

Если вы хотите сравнить только первого персонажа, вы можете сделать cat[4][3][0] == dog[0].

Смежные вопросы