求教cannot convert parameter 1 from class

来源:百度知道 编辑:UC知道 时间:2024/06/16 20:15:37
#include<iostream>
#include<string>
#include<vector>
#include<ctype.h>
using namespace std;
char se(char s[]);
void main()
{ char c;
vector<string> tom;
string i;
while(cin>>i)
tom.push_back(i);
cout<<tom.size()<<endl;
for(vector<string>::size_type ix=0;ix!=tom.size();ix++ )
cout<<"tom["<<ix<<"]="<<tom[ix]<<endl;
for(vector<string>::size_type d=0;d!=tom.size();d++ )
{ se(tom[d]);
cout<<"tom["<<d<<"]="<<tom[d]<<endl;
}

}
char se(char *p)
{ char d;
for(int i=0;i<strlen(p);i++)
d=*(p+i)-32;
cout<<d;
};
不知道是什么原因,求教!
{
/*
p[d]=&tom[d];
cout<<p[d]<<endl;
*/
cout<<"tom[&qu

{ se(tom[d]);
string 不能自动转 char* , 必须用 string::str()函数

se(tom[d].str());

你这个问题在c里面答案很简单, 而在c++里就没什么意义。 因为c++允许运算符重载, 所以数组和重载了[]的类都可以用a[j]这样的用法。 这里string就是个重载了operator []的类。 所以能不能这样用只能去看文档或者看代码, 没有通过名字就知道能怎么用的方法。 这就是c++混乱的地方, 没有了c的一致性, 你不能因为看到用法就知道“这是个什么东西”

试试这个:

//输入一个单词,判断是否为“回文”。
#include <stdio.h>
#include <string.h>

void main()
{
char hui[20];
printf("请输入字符串:\n");
scanf("%s",hui);
int i,n,m=strlen(hui);
for(i=0;i<m;i++)
{
if(hui[i]!=hui[m-1-i])
{
n=0;break;
}
else n=1;
}
if(n) printf("%s 是回文。",hui);
else printf("%s 不是回文。",hui);
}