c++ - char类型声明和验证

标签 c++ comparison c-strings strcmp

如何查看char类型?我的变量输入需要是一个字符,因为它包含字母和数字。 如果我使用 string 而不是 char,while 没有错误,但 cin.getline(input,10) 有错误

char input[10];
while(input != "1") //Error: result of comparison against a string literal is unspecified(use strncmp //instead)
{
cin.getline(input, 10);
}

最佳答案

在表达式中(很少有异常(exception),例如在 sizeof 运算符中使用它们时)数组被隐式转换为指向其第一个元素的指针。

在这种情况下

while(input != "1")

有数组第一个字符的比较地址input和字符串文字的第一个字符 "1" .

改用标准 C 函数 strcmp在 header 中声明 <cstring> .

注意代码片段中的数组 input未初始化。因此,在将它与某些东西进行比较之前,您必须对其进行初始化。

关于c++ - char类型声明和验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57995914/

相关文章:

c - 搜索字符串中的子字符串及其位置

C:生成缓冲区

c++ - 从 C++ 到 OpenCL 的指针

C: 字符串中的字符与 '\0' 之间的比较不起作用?

c++ - gcc - 如何自动检测每个基本 block

Java 整数比较 : greater than

javascript - 对象/数组的深度比较

c - 重新排列字符串字母

c++ - 当我使用 long long int 和 int 作为参数时,为什么 max 函数会出现错误

c++ - 类自引用问题