2016-02-04 156 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]