2

我是 C++ 新手,我在类和对象方面玩得很糟糕。我找不到让用户输入数据的方法,而不仅仅是一些 cout <<".."; 从我。我需要了解类和对象。我将衷心感谢您的帮助。我在论坛上搜索了类似的问题,但我没有找到任何东西,如果我错过了,我真的很抱歉。

#include <iostream>
#include <string>

using namespace std;

class ManosClass{
public:
    string name;
};

int main ()
{
    ManosClass co;
    co.name =          //i want here the user to enter his name for example and i can't figure a way to do this
    cout << co.name;
    return 0;
}
4

4 回答 4

2

要阅读用户输入,您正在寻找查看std::getline或使用std::cin

std::getline(std::cin, co.name);

或者

std::cin >> co.name;
于 2013-07-22T10:26:08.820 回答
2

cout把东西发出去。cin发送东西。这可能会有所帮助:

cin >> co.name;
于 2013-07-22T10:26:49.837 回答
2

cout 是输出。cin 用于输入。

 cin >> co.name

在 co.name 中输入值

于 2013-07-22T10:41:29.620 回答
1

如果您不想假设一个人的名字是空格分隔的,请考虑getline()其所在的版本。<string>有些名称确实包含多个“单词”。它也没有那么笨拙,cin.getline()因为您不需要提前指定某人姓名的最大长度。

#include <iostream>
#include <string>
using namespace std;

int main()
{
   string strName;
   getline(cin, strName); //Will read up until enter is pressed
   //cin >> strName //will only return the first white space separated token
   //Do whatever you want with strName.
}

编辑:修改为使用原始类

#include <iostream>
#include <string>

using namespace std;

class ManosClass{
public:
    string name; //You might want to look at rather not using public data in a class
};

int main ()
{
    ManosClass co;
    getline(cin, co.name);
    cout << co.name;
    return 0;
}

替代方案:运算符重载

#include <iostream>
#include <string>

using namespace std;

class ManosClass{
public:
     friend ostream& operator<<(ostream& out, const ManosClass& o);
     friend istream& operator>>(istream& in, ManosClass& o);
private:
    string name; //Hidden from prying eyes
};

ostream& operator<<(ostream& out, const ManosClass& o)
{
    out << o.name;
    return out;
}

istream& operator>>(istream& in, ManosClass& o)
{
    getline(in, o.name);
    return in;
}

int main ()
{
    ManosClass co;
    cin >> co; //Now co can be used with the stream operators
    cout << co;
    return 0;
}
于 2013-07-22T10:31:13.953 回答