我有一个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]获取狗的地址是有效的,但后来我得到的是整个单词,而不是我想要的单词。
有没有解决方法呢?
答案 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] == dog
。 cat[4][3]
是std::string
,因此您可以直接将其与dog
进行比较。
如果您只想比较第一个字符,可以cat[4][3][0] == dog[0]
。