为啥我会收到错误错误 C2664:'reverseString'
Posted
技术标签:
【中文标题】为啥我会收到错误错误 C2664:\'reverseString\'【英文标题】:Why do i get error error C2664: 'reverseString'为什么我会收到错误错误 C2664:'reverseString' 【发布时间】:2014-07-14 03:50:25 【问题描述】:#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
typedef char string80[81]; // create a synonym for another type
void reverseString(string80); // function prototype
int main()
// start program compilation here
char string80, name; // variable to contain the name of the user
cout << "Enter your name =====> " ;
cin >> name,81;
cout << "\n\nWelcome to Computer Science 1106 " << name << endl<< endl;
reverseString(name);
cout << "Your name spelled backwards is " << name << endl << endl;
return 0;
// end function main
// Function to reverse a string
// Pre: A string of size <= 80 Post: String is reversed
void reverseString(string80 x)
int last = strlen(x)- 1; // location of last character in the string
int first = 0; // location of first character in the string
char temp;
// need a temporary variable
while(first <= last)
// continue until last > first
temp = x[first]; // Exchange the first and last characters
x[first] = x[last];
x[last] = temp;
first++; // Move on to the next character in the string
last--; // Decrement to the next to last character in the string
// end while
// end reverseString
我收到一个错误
C2664: 'reverseString' : 无法将参数 1 从 'char' 转换为 'char []' 从整数类型转换为指针类型需要 reinterpret_cast、C-style cast 或 function-style cast
【问题讨论】:
您的意思是string80 name;
而不是char string80, name;
? PS你可以使用std::string
和std::reverse
标准函数。
还有cin >> name,81;
?
另外,cin >> name,81;
失败了,你的意思是cin >> setw(81) >> name;
【参考方案1】:
reverseString
函数接受 char [81]
作为 x 参数,但您在调用它时向它发送 char
。
您可能想要做的是将string80
和name
声明为char [81]
而不是char
char string80[81], name[81];
【讨论】:
【参考方案2】:您将name
声明为char
类型,而应将其键入为string80
(来自您的typedef)。
您还无意中通过声明 char string80
隐藏了您的 typedef,这将 typedef 隐藏在周围的范围之外。
您想将name
声明为string80
类型,而不是char
类型。像这样的:
string80 name;
【讨论】:
以上是关于为啥我会收到错误错误 C2664:'reverseString'的主要内容,如果未能解决你的问题,请参考以下文章