C ++中struct中struct的字符串

时间:2016-01-06 02:35:33

标签: c++ struct

所以我要再做一次运动。这次我需要定义一个结构和一个100元素的数组,它将存储有关该书的信息(标题,作者,ID号,价格)和一个简单的函数,它将打印有关所有存储书籍的信息。我开始使用该代码:

#include <iostream>

using namespace std;

int main()
{
    struct name_surname {string name, surname;};
    struct book {string title; name_surname author_name, author_surname; int ID; int price;};
    return 0;
}

而且,现在呢?如何将其存储在数组中?

5 个答案:

答案 0 :(得分:2)

您只需创建一个类型簿或name_surname数组或任何您想要的数组。

示例:

book arr[100];

arr[0].title = "The last robot";
arr[0].ID = 2753;

提示:

如果您的结构/类以大写字母开头,这是一个很好的编程习惯,因此更容易区分它们,因此更容易将变量命名为没有大写字母的相同名称。实施例。

struct Name_surname 
{
    string name, surname;
};

Name_surname name_surname[100];
name_surname[0].name = "MyName";

另一个提示是,我真的建议你学习如何研究,这个问题已被回答了数百万次,并且答案都在互联网上。

答案 1 :(得分:0)

这是我的建议:

struct book 
{
    string title; 
    string name_surname;
    string author_name;
    string author_surname;
    int ID; 
    int price;
};


struct  Database
{
     book *array;
     void  printDatabase()
     {
         for(int i = 0 ; i < 100 ;i++)
                cout<<array[i].title<<endl;
     }

    Database()
    {
        array =  new string [100];
    }


};

答案 2 :(得分:0)

您的名称结构似乎有点混乱,但创建数组只是声明一个附加[]的变量给出大小的情况。

例如:

struct full_name
{
    std::string firstname;
    std::string surname;
};

struct book
{
    std::string title;
    full_name author;
    int ID;
    int price;
};

int main()
{
    // Declare an array using []
    book books[100]; // 100 book objects

    // access elements of the array using [n]
    // where n = 0 - 99
    books[0].ID = 1;
    books[0].title = "Learn To Program In 21 years";
    books[0].author.firstname = "Idont";
    books[0].author.surname = "Getoutalot";

}

答案 3 :(得分:0)

您如何看待这个:

#include <iostream>

using namespace std;

struct book {string title; string name; int ID; int price;} tab[100];

void input(book[]);
void print(book[]);

int main()
{
    input(tab);
    print (tab);
    return 0;
}

void input(book tab[])
{
    for (int i=0;i<3;i++)
    {
        cout<<"\nBook number: "<<i+1<<endl;
        cout<<"title: ";cin>>tab[i].title;
        cout<<"name: ";cin>>tab[i].name;
        cout<<"ID: ";cin>>tab[i].ID;
        cout<<"price: ";cin>>tab[i].price;
    }
}

void print (book tab[])
{
    for (int i=0; i<3; i++)
    {
        cout<<"\nBook number: "<<i+1<<endl;
        cout<<"title: "<<tab[i].title;
        cout<<"\nname: "<<tab[i].name;
        cout<<"\nID: "<<tab[i].ID;
        cout<<"\nprice: \n"<<tab[i].price;
    }
}

我在Yt视频的帮助下做到了这一点。它有效,但是,有没有办法做得更好,或者只是留下它是怎么回事?我有一个问题:为什么那些功能参数?我不能只说tab[]或其他什么吗?

答案 4 :(得分:0)

计算机语言基于一般规则和递归规则。试着用基本的理解进行实验和推断,以构建看似复杂的东西。来到你想要实现的目标:

  • 我们知道,可以为任何数据类型声明一个数组(原始数据或派生数据,可以称之为POD和ADT)。
  • 我们知道,struct可以包含任何数据类型的任意数量的元素。
  • 现在,我们可以看到MyStruct []与int []一样自然。

如果使用现代编译器,最好选择std::array