从'char'到'const char *'的C++ strcmp转换

问题描述:

Hello noob程序员在这里遇到了strcmp问题,这是我的代码。从'char'到'const char *'的C++ 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:在成员函数 '无效DiningSet :: woodType()':
  • dining.cpp:76:24:错误:从 '字符' 无效转换到 '为const char *'[ - fpermissive] /usr/include/string.h:143:12:error:初始化参数2'int strcmp(const char *,const char *)'[-fpermissive]
  • dining.cpp:76:48:错误:从'char'到'const char *'无效转换[-fpermissive] /usr/include/string.h:143:12:错误:初始化参数2'int strcmp(const char *,const char *) '[-fpermissive]
  • dining.cpp:76:72:错误:从'char'无效转换为'const char *'[-fpermissive] /usr/include/string.h:143:12:错误:初始化参数2'int strcmp (常量字符*,常量字符*)” [-fpermissive]
+0

的''||应该是''&& – xanatos 2012-03-13 11:05:24

+4

如果要比较两个'char'just使用''==或'!=',如果你想比较两个字符串('char *')然后使用'strcmp'。将单个字符与字符串进行比较没有任何意义,这正是您所看到的。 – 2012-03-13 11:05:27

+0

什么是木材的数据类型.. ?? – 2012-03-13 11:05:34

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

更改为:

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

木是char类型的 – 2012-03-13 11:09:01

+0

这个答案是正确的,@Daniel D C,加上我的评论在Q下说的更好的理解。 – 2012-03-13 11:09:35

+0

@DanielDC我想看看[char和字符串文字](http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/index.jsp?topic=%2Fcom.ibm.vacpp6m.doc%2Flanguage %2Fref%2Fclrc02ccon.htm)此外太答案:) – 2012-03-13 11:11:57

错误显示了第二个参数的问题。它应该是一个const char *

strcmp的签名是:

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