从'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]
wood
是char
类型的:它必须是一个字符串,即char*
,在strcmp()
使用。
更改为:
while ('m' != wood && 'j' != wood && 'o' != wood)
木是char类型的 – 2012-03-13 11:09:01
这个答案是正确的,@Daniel D C,加上我的评论在Q下说的更好的理解。 – 2012-03-13 11:09:35
@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);
的''||应该是''&& – xanatos 2012-03-13 11:05:24
如果要比较两个'char'just使用''==或'!=',如果你想比较两个字符串('char *')然后使用'strcmp'。将单个字符与字符串进行比较没有任何意义,这正是您所看到的。 – 2012-03-13 11:05:27
什么是木材的数据类型.. ?? – 2012-03-13 11:05:34