【问题标题】:strcmp conversion from ‘char’ to ‘const char*’strcmp 从‘char’到‘const char*’的转换
【发布时间】:2012-03-13 11:03:24
【问题描述】:

我遇到了 strcmp 问题。

这是我的代码。

while (strcmp("m",wood) !=0 || strcmp("j",wood) !=0 || strcmp("o",wood) !=0){
    cout << "(m for mahogany, o for oak, or p for pine): ";
cin >> wood;
}

这是我的错误:

dining.cpp: In member function ‘void DiningSet::woodType()’:
dining.cpp:76:24: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
/usr/include/string.h:143:12: error:   initialising argument 2 of ‘int strcmp(const char*, const char*)’ [-fpermissive]
dining.cpp:76:48: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
/usr/include/string.h:143:12: error:   initialising argument 2 of ‘int strcmp(const char*, const char*)’ [-fpermissive]
dining.cpp:76:72: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
/usr/include/string.h:143:12: error:   initialising argument 2 of ‘int strcmp(const char*, const char*)’ [-fpermissive]

【问题讨论】:

  • 如果你想比较两个char就用==!=,如果你想比较两个字符串(char *)那么用strcmp。将单个字符与字符串进行比较没有任何意义,这就是您似乎正在做的事情。
  • wood 的数据类型是什么..??

标签: c++ char strcmp


【解决方案1】:

woodchar 类型:它必须是一个字符串,即char*,才能在strcmp() 中使用。

改为:

while ('m' != wood && 'j' != wood && 'o' != wood)

【讨论】:

  • 这个答案是正确的,@Daniel D C,为了更好地理解,添加我在 Q 下的评论。
  • @DanielDC 我想看看char and string literals 也是答案:)
  • 谢谢大家!感谢您的快速响应!
  • 字符比较只使用“==”和单个字符包含“'”
【解决方案2】:

错误显示第二个参数有问题。应该是const char *

strcmp的签名是:

int strcmp ( const char * str1, const char * str2 );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    相关资源
    最近更新 更多