我之前提到了一个关于结构的话题。而且我知道类与结构具有相同的概念。我如何将字符串存储到类中?
这是班级
class studentType
{
public:
void setData(string, int);
string getName() const;
int getId() const;
private:
string name;
int sid;
};
void studentType::setData(string, int) {
name = ??;
sid = ??;
}
string studentType::getName() const {
return name;
}
int studentType::getId() const {
return sid;
}
主要包括:
int main() {
studentType object, number;
cout << "enter name and code of item1: ";
cin >> object.setData() >> object.setData();
cout << "enter name and code for item2: ";
cin >> number.setData() >> number.setData();
system("pause");
return 0;
}
我如何修复cin问题?我已经在标题中定义了字符串。是的,我知道使用命名空间std;不是首选,但为了简单起见
答案 0 :(得分:1)
int id;
string name;
cout << "enter name and code of item1: ";
cin >> name >> id;
object.setData(name, id);
cout << "enter name and code for item2: ";
cin >> name >> id;
object.setData(name, id);
您应该为您的班级使用构造函数:
class studentType {
public:
studentType(string name, int sid)
: name(name)
, sid(sid)
{ }
// ...
然后,您可以使用正确的名称和ID初始化对象:
cin >> name >> id;
studentType object(name, id);
但我认为构造函数很快就会出现在你正在做的教程或课程中。
答案 1 :(得分:0)
cin >> object.setData() >> object.setData();
>>
运算符不会调用object.setData
;它需要一个引用并将引用内容设置为提取的输入。表达式object.setData()
调用函数,该函数返回void。当然,>>
运算符不能采用void参数。此外,funcall中没有足够的参数,因为object.setData
需要string
和int
。
你应该这样做:
std::string name;
int num;
cin >> name >> num;
object.setData(name, num);
答案 2 :(得分:0)
您的setData
功能可以是这样的:
void studentType::setData(string name, int sid) {
this->name = name;
this->sid = sid;
}
在您的main()
:
首先cin
值,然后调用setData
函数,即
int main(){
string name;
int code;
studentType object, number;
cout << "enter name and code of item1: ";
cin >> name >> code;
object = studentType();
object.setData(name, code);
// your remaining code
}
请注意:
如果您使用cin
获取名称和代码,则名称只能是一个单词。假设您正在写两个单词的名称,第一个单词将被放入名称,第二个单词将被尝试放入代码。
简单来说,cin
是以空格分隔的。
答案 3 :(得分:0)
您正在寻找的是std::getline()
。我会使用cin
来获取整数,但不能使用字符串。我会像这样分开用户输入。就像@Suhaib Ahmad所说,cin
是以空格分隔的。要获取包含stdin
空格的字符串,请使用std::getline()
。
void studentType::setData(string n, int i) {
this->name = n;
this->sid = i;
}
-
int main(void) {
string n;
int i;
studentType object, number;
cout << "Enter name for item1: ";
getline(cin, n);
cout << "Enter code for item1: ";
cin >> i;
object = studentType(); // make sure you construct your studentType, I also recommend using a constructor function
object.setData(n, i);
cout << "Enter name for item2: ";
getline(cin, n);
cout << "Enter code for item2: ";
cin >> i;
number = studentType();
number.setData(n, i);
system("pause");
return 0;
}
使用setData()
的方式,没有给出参数,作为存储cin
输入的位置是不正确的。您需要先声明变量,然后使用变量初始化类。