2016-02-04 134 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貓[10] [10];

//貓陣列然後通過CIN填入值

//這是麻煩的部分

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

這是我認爲正在發生的事情。你想創建一個字符串貓[10],而不是字符串貓[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] == dogcat[4][3]std::string,因此您可以直接將其與dog進行比較。

如果你只是想比較第一個字符,你可以做cat[4][3][0] == dog[0]