C++ 指向结构的指针-无法理解特定的代码片段

C++ 指向结构的指针-无法理解特定的代码片段,c++,C++,代码如下: // pointers to structures #include <iostream> #include <string> #include <sstream> using namespace std; struct movies_t { string title; int year; }; int main () { string mystr; movies_t amovie; movies_t * pmovie;

代码如下:

// pointers to structures
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

struct movies_t {
  string title;
  int year;
};

int main ()
{
  string mystr;

  movies_t amovie;
  movies_t * pmovie;
  pmovie = &amovie;

  cout << "Enter title: ";
  getline (cin, pmovie->title);
  cout << "Enter year: ";
  getline (cin, mystr);
  (stringstream) mystr >> pmovie->year;

  cout << "\nYou have entered:\n";
  cout << pmovie->title;
  cout << " (" << pmovie->year << ")\n";

  return 0;
}
//指向结构的指针
#包括
#包括
#包括
使用名称空间std;
结构电影{
字符串标题;
国际年;
};
int main()
{
字符串mystr;
电影(amovie),;
电影节;
pmovie=&amovie;
标题);
cout>pmovie->year;
cout title)
工作

  • 现在这个
    (stringstream)mystr>>pmovie->year
    给我带来了最大的麻烦。什么是
    stringstream
    ,我们使用它就像我们将双精度转换为整数一样吗

  • 谢谢大家!

    什么是getline以及它是如何工作的?我试图查找文档,但我仍然难以理解。另外,什么是cin以及它是如何与getline一起使用的

    getline
    函数从
    istream
    读取一行。
    cin
    流指的是您的标准输入流,您通常从中获取输入。它被传递到
    getline
    ,告诉它从哪个输入流获取一行

    如果我理解正确,pmovie->title本质上是说pmovie指向对象amovie的成员标题?如果是,并且从对#1的解释中还不清楚,getline(cin,pmovie->title)是如何工作的

    getline
    函数从
    cin
    读取一行,并将其存储在通过引用传递的
    pmovie->title

    现在这个(stringstream)mystr>>pmovie->year给我带来了最大的麻烦。什么是stringstream,我们使用它就像我们将双精度转换为int一样吗

    stringstream
    是一个使字符串像流一样工作的类。这是一种令人困惑的语法(C样式转换)这使得理解发生了什么变得有点困难。基本上,一个临时的
    stringstream
    是用
    mystr
    的内容创建和初始化的。一个
    stringstream
    当用字符串初始化时,会给你一个流,你可以从中读取这些内容。
    操作符从一个输出中读取在本例中,t流进入
    pmovie->year
    ,再次通过引用传递

    顺便说一句,在我看来,你试图理解异常复杂和令人困惑的用法,却没有理解这些对象更基本的用法。这是一个非常难学的方法

    什么是getline以及它是如何工作的?我试图查找文档,但我仍然难以理解。另外,什么是cin以及它是如何与getline一起使用的

    getline
    函数从
    istream
    读取一行。
    cin
    流指的是您的标准输入流,您通常从中获取输入。它被传递到
    getline
    ,告诉它从哪个输入流获取一行

    如果我理解正确,pmovie->title本质上是说pmovie指向对象amovie的成员标题?如果是,并且从对#1的解释中还不清楚,getline(cin,pmovie->title)是如何工作的

    getline
    函数从
    cin
    读取一行,并将其存储在通过引用传递的
    pmovie->title

    现在这个(stringstream)mystr>>pmovie->year给我带来了最大的麻烦。什么是stringstream,我们使用它就像我们将双精度转换为int一样吗

    stringstream
    是一个使字符串像流一样工作的类。这是一种令人困惑的语法(C样式转换)这使得理解发生了什么变得有点困难。基本上,一个临时的
    stringstream
    是用
    mystr
    的内容创建和初始化的。一个
    stringstream
    当用字符串初始化时,会给你一个流,你可以从中读取这些内容。
    操作符从一个输出中读取在本例中,t流进入
    pmovie->year
    ,再次通过引用传递

    顺便说一句,在我看来,你试图理解异常复杂和令人困惑的用法,却没有理解这些对象更基本的用法。这是一个非常难学的方法

    <>代码> CIN < /C>是一种由C++定义的专门用于标准输出(通常是键盘,但几乎可以是任何东西)的流。<代码> GETLINE 是一种函数,它允许您从流中读取文本到缓冲区中,直到遇到平台的行结束(在UNIX上的换行,Windows和DOS的回车回线)。
  • pmovie->title
    表示
    pmove
    是一个指向结构的指针,该结构有一个名为
    title
    的成员。它引用该成员。因为
    getline
    接受一个
    字符串&
    (字符串引用),所以它愉快地接受
    pmovie->title
    引用的字符串
  • stringstream
    定义一个隐式构造函数,该构造函数将
    string
    s转换为
    stringstream
    s。
    运算符从字符串获取输入,并将其转换为目标类型(操作数的类型在
    >
    的右侧)这只是一种将字符串转换为整数的方法
  • <>代码> CIN < /C>是一种由C++定义的专门用于标准输出(通常是键盘,但几乎可以是任何东西)的流。<代码> GETLINE 是一种函数,它允许您从流中读取文本到缓冲区中,直到遇到平台的行结束(在UNIX上的换行,Windows和DOS的回车回线)。
  • pmovie->title
    表示
    pmove
    是一个指向结构的指针,该结构有一个名为
    title
    的成员。它引用该成员。因为
    getline
    接受一个
    字符串&
    (字符串引用),所以它愉快地接受
    pmovie->title
    引用的字符串
  • stringstream
    if (std::getline(std::cin, pmovie->title)) {
        // deal with a successfully read title
    }