C++字符串不起作用
C++ strings not working
我想让这个程序在屏幕上显示"Gianna"Maria"和"M"字符串,但我不能。没有错误,所以我想我的程序有问题。任何建议可以修复我的程序?
#include <iostream>
#include <string>
using namespace std;
class name
{
string fName, mName, sName;
public:
name (string fName, string mName, string sName){};
void setFName (string fName);
void setMName (string mName);
void setSName (string sName);
string getFName() const {return fName;}
string getSName() const {return sName;}
string getMName() const {return mName;}
friend ostream & operator <<(ostream &, const name &);
};
ostream& operator<<(ostream& os, const name& n) {
return os << n.fName << " " << n.sName<< " " << n.mName;
}
int main ()
{
name myName ("Gianna", "Maria", "M");
cout<<myName.getFName()<<" "<<myName.getMName()<<" "<<myName.getSName()<<endl;
return 0;
}
你的构造函数:
name (string fName, string mName, string sName){};
什么都不做。您需要使用这些参数来初始化成员变量。
name (string f, string m, string s)
: fName(f), mName(m), sName(s) {}
你忘了在构造函数中初始化类的 daya 成员。
按以下方式定义构造函数
name( const string &fName, const string &mName, const string &sName )
: fName( fName ), mName( mName ), sName( sName )
{
}
相应地,这些成员函数应定义如下
void setFName ( const string &fName)
{
this->fName = fName;
}
void setMName (const string &mName)
{
this->mName = mName;
}
void setSName (const string &sName)
{
this->sName = sName;
}
没有必要将operator <<
作为类的友元函数。它可以定义为
ostream& operator <<( ostream& os, const name& n ) {
return os << n.getFName() << " " << n.getMName() << " " << n.getSName();
}
构造函数必须将传递给成员变量的参数赋值,这不会自动发生。
name (string fName, string mName, string sName) : fName(fName), mName(mName), sName(sName) {};
对于构造函数,将三个字符串作为参数,但不会将成员变量设置为其值。您可以在构造函数上使用初始值设定项列表,如下所示...
name (string f, string m, string s)
: fName(f), mName(m), sName(s) // member(parameter) format
{
}
。或者您可以实现您拥有的setter
存根...
void setFName(string name) { this->fName = name;}
。并在构造函数中使用它们,例如...
name (string fName, string mName, string sName) {
setFName(fName);
//...
}
基本上,构造函数中传递的参数会丢失,因为您没有将其分配给类变量。
执行以下操作:
name (string f, string m, string s) : fName(f), mName(m), sName(s){....};
试试这个。你忘了实现类的构造函数
#include <iostream>
#include <string.h>
using namespace std;
class name
{
string sFName, sMName, sSName;
public:
name (string FName, string MName, string SName);
void Display();
void setFName (string fName);
void setMName (string mName);
void setSName (string sName);
string getFName() const {return sFName;}
string getSName() const {return sSName;}
string getMName() const {return sMName;}
};
name::name(string FName, string MName, string SName )
{
sFName = FName;
sMName = MName;
sSName = SName;
}
void name::setFName(string fName)
{
sFName = fName;
}
void name::setMName(string mName)
{
sMName = mName;
}
void name::setSName(string sName)
{
sSName = sName;
}
void name::Display()
{
cout<< sFName<< endl;
cout<< sMName<< endl;
cout<< sSName<< endl;
}
int main ()
{
name myName ("Gianna", "Maria", "M");
myName.Display();
return 0;
}
相关文章:
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 尝试使用C++中的模板进行BST排序,但在使用随机字符串进行测试时不起作用
- boost::spirit::x3 中的简单字符串解析器不起作用
- 用于拆分空格字符串的程序不起作用
- 比较字符串的 GetLine 工作一次,然后比较之后不起作用
- C++11+=当RHS有多个字符串或字符时,运算符不起作用
- 将字符从一个字符串简单分配到另一个字符串不起作用
- C++ 对象数组字符串输入在控制台上不起作用
- 字符串代码不起作用
- 检查字符串中的小写字符或空格.布尔值不起作用
- 在C 中使用Atof将字符串转换为小数不起作用
- 字符串等于不起作用 C++
- 从中间器转换字符串不起作用,出了什么问题?
- 为什么strcpy()不起作用,请接受字符串作为参数
- 在字符串中找到元音不起作用
- C++将字符串写入文本文件中的行;新行问题不起作用
- int 有效,但字符串::size_type不起作用
- C++ 如果要替换的句子具有"+"符号,则替换字符串功能不起作用
- C++字符串不起作用
- 排序功能不起作用(字符串比较问题)