积极答复者
C++问题

问题
-
#include<iostream>
#include<string>
using namespace std;
int main()
{
char a[]={"一二"},b[]={"一二三"},x;
while(true)
{
cout<<"请输入"<<endl;
cin>>x;
if(sizeof x==sizeof a)
{
string xx=x;
switch(xx)
{
case "关羽":
cout<<"历史名将"<<endl;
case "江姐":
cout<<"革命前辈"<<endl;
default:
cout<<"没有记载"<<endl;
}
}
if(sizeof x==sizeof b)
{
string xx=x;
switch(xx)
{
case "刘伯承":
cout<<"中国十大元帅之一"<<endl;
case "杨靖宇":
cout<<"民族英雄"<<endl;
default:
cout<<"没有记载"<<endl;
}
}
system("pause");
}
return 0;
}
上述代码为什么错误?
答案
-
x是char类型的,不能和string类进行转换。
字符串类型才行(char*或者char[])。
0xBAADF00D
问题是switch(参数)
参数不能为string 类型;还有就是不能用char类型初始化string类的对像
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ca;
cin>>ca;
string strb; //这个可以正常运行(vc 6.0)
strb=ca;
switch(ca)
{
case 'b' : cout<<"fasdf";break;
default : cout<<"ghdhfg";
}
return 0;
}
/////////////////////////////////////////////////////
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ca;
cin>>ca;
string strb=ca; //这个会报错(vc 6.0)
switch(ca)
{
case 'b' : cout<<"fasdf";break;
default : cout<<"ghdhfg";
}
return 0;
}
//////////////////////////////////////////////////////////
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ca;
cin>>ca;
string strb; //这个也会报错和上面的那个一样(vc 6.0)
strb=ca;
switch(strb)
{
case 'b' : cout<<"fasdf";break;
default : cout<<"ghdhfg";
}
return 0;
}
///////////////////////////////////////
还有就是你的while(true)是个死循环,因为你的while()循环体中没有break;但你测试的条件表达式却一直为真
冰冻三尺非一日之寒,为了共同的梦想...........努力........在努力.......成功- 已建议为答案 Wyz_Touring 2009年10月18日 3:23
- 已标记为答案 SplendourGModerator 2009年10月19日 10:10
-
这个程序中循环是永真循环,switch的case下面没有break 要是有输出的话输出也是一样的将所有字符串都输出。
char不能为string进行赋值。
switch的条件应该是整型或是能自动转化为整型的数据- 已建议为答案 Mack Juesson 2009年10月17日 16:24
- 已标记为答案 SplendourGModerator 2009年10月19日 10:10
全部回复
-
x是char类型的,不能和string类进行转换。
字符串类型才行(char*或者char[])。
0xBAADF00D
问题是switch(参数)
参数不能为string 类型;还有就是不能用char类型初始化string类的对像
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ca;
cin>>ca;
string strb; //这个可以正常运行(vc 6.0)
strb=ca;
switch(ca)
{
case 'b' : cout<<"fasdf";break;
default : cout<<"ghdhfg";
}
return 0;
}
/////////////////////////////////////////////////////
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ca;
cin>>ca;
string strb=ca; //这个会报错(vc 6.0)
switch(ca)
{
case 'b' : cout<<"fasdf";break;
default : cout<<"ghdhfg";
}
return 0;
}
//////////////////////////////////////////////////////////
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ca;
cin>>ca;
string strb; //这个也会报错和上面的那个一样(vc 6.0)
strb=ca;
switch(strb)
{
case 'b' : cout<<"fasdf";break;
default : cout<<"ghdhfg";
}
return 0;
}
///////////////////////////////////////
还有就是你的while(true)是个死循环,因为你的while()循环体中没有break;但你测试的条件表达式却一直为真
冰冻三尺非一日之寒,为了共同的梦想...........努力........在努力.......成功- 已建议为答案 Wyz_Touring 2009年10月18日 3:23
- 已标记为答案 SplendourGModerator 2009年10月19日 10:10
-
这个程序中循环是永真循环,switch的case下面没有break 要是有输出的话输出也是一样的将所有字符串都输出。
char不能为string进行赋值。
switch的条件应该是整型或是能自动转化为整型的数据- 已建议为答案 Mack Juesson 2009年10月17日 16:24
- 已标记为答案 SplendourGModerator 2009年10月19日 10:10