blc*_*llo 5 c++ string-literals character-arrays
我有一个字符数组,我试图找出它是否匹配字符串文字,例如:
char value[] = "yes";
if(value == "yes") {
// code block
} else {
// code block
}
Run Code Online (Sandbox Code Playgroud)
这导致以下错误:与字符串文字比较导致未指定的行为.我也试过类似的东西:
char value[] = "yes";
if(strcmp(value, "yes")) {
// code block
} else {
// code block
}
Run Code Online (Sandbox Code Playgroud)
这不会产生任何编译器错误,但它的行为不符合预期.
Dav*_*ler 24
查看strcmp的文档.提示:它不返回布尔值.
ETA:==不一般的工作,因为cstr1 == cstr2比较指针,这样比较才会是真实的,如果cstr1和cstr2指向同一个内存位置,即使他们碰巧都指的是字典顺序相同字符串.您尝试过的(比较cstring与文字,例如cstr == "yes")尤其不起作用,因为标准并不要求它.在一个合理的实现中,我怀疑它会爆炸,但cstr == "yes"不太可能成功,因为cstr不太可能引用字符串常量"yes"所在的地址.
| 归档时间: |
|
| 查看次数: |
10639 次 |
| 最近记录: |