将2d字符串数组与字符串C ++进行比较

时间:2016-02-04 23:30:19

标签: c++ arrays string

我有一个2d字符串数组和一个我想要比较的字符串但strcmp不起作用,除非我将字符串转换为(const char *)并且这导致我出现seg错误。

目前我的代码简化为:

/* Set the window text */
SetWindowText(hwndEDUSER, _T("username"));

/* Get the window text */
TCHAR *buf;
int len;

if((buf=malloc(len=((GetWindowTextLength(hwndEdit)+1)*sizeof (TCHAR)))!=NULL)
    GetWindowText(hwndEdit, buf, len);
/* Use buf */
free(buf);

使用& dog [0]获取狗的地址是有效的,但后来我得到的是整个单词,而不是我想要的单词。

有没有解决方法呢?

2 个答案:

答案 0 :(得分:0)

  

string cat [10] [10];

     

// cat数组然后通过cin

填充值      

//这是一个麻烦的部分

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

答案 1 :(得分:0)

你正在使用C ++ std::string,它有一个过载的operator==,所以你根本不需要strcmp。如果您想查看两个string是否相等,则可以cat[4][3] == dogcat[4][3]std::string,因此您可以直接将其与dog进行比较。

如果您只想比较第一个字符,可以cat[4][3][0] == dog[0]