C++ 字符串类中的cin.get()或重载

C++ 字符串类中的cin.get()或重载,c++,c++11,operator-overloading,overloading,C++,C++11,Operator Overloading,Overloading,我在下面有一个字符串类: class Mystring { private: char *letter; public: friend ostream & operator <<(ostream &out, const Mystring& s); friend istream & operator >>(istream &i

我在下面有一个字符串类:

class Mystring
{
        private:
            char *letter;

        public:

            friend ostream & operator <<(ostream  &out, const Mystring& s);
            friend istream & operator >>(istream &in,Mystring& s);
};
类Mystring
{
私人:
字符*字母;
公众:
friend ostream&operator(istream&in、Mystring&s);
};
这是主要功能:

int main()
{
    Mystring s[10];

    cin.get(s,10);
    cout << s;

    _getch();
    return 0;
} 
intmain()
{
Mystring[10];
cin.get(s,10);

cout
cin.get
cin
的成员函数(因此是
)。您不能重载它,因此应该使用
操作符

for (auto& i : s)
    cin >> s;
如果您不想这样做,只需在
MyString
中编写一个
get
方法,该方法接受
istream

Mystring& Mystring::get(std::istream& in) { ... }

Mystring ms;
ms.get(std::cin);

您不能重载该类之外的另一个类的成员函数。由于运算符的语法,您可以这样做,但仅此而已。您必须更改自己的类来处理它。

如果要将其分配给MyString数组,则应将其分配给MyString对象


如果您有“>>”和“为什么不使用
>
操作符?OMG!!!如果我使用我的>>操作符,它将删除空格后面的所有字符:(@BunThaiDeng,这就是
get
现在要做的事?当我输入一个像“Hello”这样的字符串时,我会输出“Hello”,但当我输入时”Hello World“it输出”Hello,所以我需要使用cin.get();@bunthaiden问题是如何重载
cin.get
,答案是这是不可能的。我不知道你想做什么,但是如果你在实现某个东西时遇到问题,你可以问一个包含所有相关信息的问题。
int main()
{
   Mystring s;

   // Mystring should construct memory for *letter and put the string      in it
   // Quite confusing why you want to have only one letter inside MyString, 
   // Probably you need to change to a better name *letters.
   cin >> s;  // will stop reading till white space
   cout << s;

   //Incase you want to read a char array and construct a MyString
   char a[10];
   cin.get(a,10);
   MyString(a); // You need to define a constructor in MyString for this to work.


    _getch();
    return 0;

}