【问题标题】:Why array of type struct do not work properly? [closed]为什么结构类型的数组不能正常工作? [关闭]
【发布时间】:2015-08-10 08:10:58
【问题描述】:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{   
    struct data
    {
        string country;
        string fathername;
        int   age;
    };
        data NAME;

    data name[5]={"Ali", "Usman", "Sarmad", "Awais", "Junaid"};
    name[0]=(struct data){"Saudi Arabia","Tahir Awan",24};
    name[1]=(struct data){"England","Akram Khan",20};
    name[2]=(struct data){"China","Amjad Ali",20};
    name[3]=(struct data){"Syria","Ahmad Ali",19};
    name[4]=(struct data){"Oman","Zohaib Sultan",24};

            cout << "Enter Name of student/n";
            cin >>  NAME;

    int j;
    for(int i=0; i<6; i++)
    {
        if(NAME==name[i])
        j=i;
    }
    cout << "We have following data for   " << name[j]<< endl;
    cout << "Country:  " << name[j].country << endl << "Father name:  " << name[j].fathername << endl << "Age:  " << name[j].age << endl;

    return 0;

}

它在初始化数组时给了我错误以及更多错误。我尝试了很多来找到错误的原因但无法找到。请在你的编译器中编译它并告诉我我可以删除这些错误。另外请告诉我错误的原因。

【问题讨论】:

  • 您对name 的初始化已关闭。标准 C++ 不支持您随后使用 C99/C11 的“复合文字”,尽管 g++ 编译器可能确实允许它作为扩展。您使用 NAME 就好像它是一个字符串而不是一个结构不会很好地工作。整体结构比较不会很好地工作。使用未初始化的j 会给你带来麻烦。你的编译器应该会告诉你这一切。
  • 换句话说,这个问题的问题太多,对任何未来的访问者都没有用处。
  • data NAME; --> struct data NAME;
  • @AmitSharma 在 C++ 中是不必要的。

标签: c++ arrays struct operators


【解决方案1】:

您不能只通过传递一个字符串来初始化data 类型的元素,因为它还需要另一个字符串和一个整数。您可以改用以下内容:

data name[5] = {
    {"Saudi Arabia","Tahir Awan",24},
    {"England","Akram Khan",20},
    {"China","Amjad Ali",20},
    {"Syria","Ahmad Ali",19},
    {"Oman","Zohaib Sultan",24}
};

Live demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多