我正在尝试检查输入字符是否是字符。然后,我有一个函数,如果它是小写,它使它成为一个大写字符。但是出于某种原因,在编译时,当我在main函数中调用我的大写函数时,我得到一个奇怪的错误“无法将参数1从'char'转换为'std :: ios_base&'。究竟是什么' ios_base&' (我假设ios_base&)是某种引用地址。这是代码:
#include <iostream>
using namespace std;
int main() {
char userChar;
cout << "Please enter a char to be converted to capital: " << endl;
cin >> userChar;
if ((userChar >= 'a' ) && (userChar <= 'z')) {
char upperCaseChar = uppercase(userChar);
cout << "Character capitalized is " << upperCaseChar << endl;
}
else if (isupper(userChar)) {
cout << "Character is already capitalized and is " << userChar << endl;
}
system("pause");
return 0;
}
char uppercase(char ch) {
return ch - 'a' + 'A';
}
这是一个简单的程序,我正在写它,因为我必须把它翻译成汇编。谢谢!
答案 0 :(得分:2)
你必须在调用之前声明一个函数。在main
之前添加此行:
char uppercase(char ch);
或将整个uppercase
函数移至main
之前。
这很好地说明了为什么不建议using namespace std
。 std
中有很多内容,包括std::uppercase
。出现错误消息的原因是,在您致电uppercase(userChar);
时,uppercase
唯一可见的定义为std::uppercase
,需要std::ios_base
参数。
您稍后再调用另一个未声明的函数isupper
。如果您的意思是std::isupper
,那么您需要#include <cctype>
。
答案 1 :(得分:1)
int toupper(int c)
- http://www.cplusplus.com/reference/cctype/toupper/ template <class charT>
charT std::toupper (charT c, const locale& loc);
- http://www.cplusplus.com/reference/locale/toupper/ uppercase
之前没有main()
的原型。