我想输出名字,可是只能输出一个字符,这可咋整?
#include <iostream>
using namespace std;
class Time
{
public:
Time(int h,int m,int s):hour(h),minute(m),second(s){};
void gettime()
{
cout<<"the time is "<<hour<<":"<<minute<<":"<<second<<endl;
}
private:
int hour,minute,second;
};
class Date
{
public:
Date (int y,int m,int d):year(y),month(m),day(d){};
void getdate()
{
cout <<"the date is "<<year<<":"<<month<<":"<<day<<' ';
}
private:
int year,month,day;
};
class Birthtime:public Date,public Time
{
public:
Birthtime(int y,int dm,int d,int h,int tm,int s,char *p):Date(y,dm,d),Time(h,tm,s),Childname(p){};
void getname()
{
cout<<"the name is "<<*Childname<<endl;
}
private:
char *Childname;
};
int main()
{
char *pt="shiyi";
Birthtime child_1(2005,01,24,03,26,39,pt);
child_1.getdate();
child_1.gettime();
child_1.getname();
}
void getname()
{
cout << "the name is " << Childname << endl;
}
建议childname变量使用字符串 std::string
#include <string>
class Birthtime:public Date,public Time
{
public:
Birthtime(int y,int dm,int d,int h,int tm,int s,char *p):Date(y,dm,d),Time(h,tm,s),childname(p){};
void getname()
{
cout<<"the name is "<< childname<<endl; // 此处去除 *
}
private:
std::string childname; // 修改为 std::string
}
不知道你这个问题是否已经解决, 如果还没有解决的话:数组定义时没有初始化,定义后又给数组整体大括号赋值,比如:
int num[5];
num[5] = { 1,2,3,4,5 };
这样是不可取的,报错情况如下:
所以,不能在数组定义之后,再用大括号整体赋值。
在利用数组下标进行赋值时,也要避免数组下标越界的情况发生(虽然很少发生,但也要注意,当代码变多变复杂时,不注意就很有可能发生)。
解决方案:
在C++中输出完整的字符串,可以直接使用cout输出字符串变量。如果只能输出一个字符,可能是定义字符串时没有加上双引号,或者在输出时少了一个<<符号。示例代码如下:
#include<iostream>
#include<string>
using namespace std;
int main(){
string name = "Tom";// 定义字符串变量name并赋值
cout << name << endl;// 输出完整的字符串name
return 0;
}
输出结果如下:
Tom
如果还是不能输出完整的字符串,可以尝试使用循环输出每个字符。示例代码如下:
#include<iostream>
#include<string>
using namespace std;
int main(){
string name = "Tom";// 定义字符串变量name并赋值
for(int i = 0; i < name.length(); i++){// 使用循环输出每个字符
cout << name[i];
}
cout << endl;// 换行
return 0;
}
输出结果与之前相同:
Tom