【发布时间】: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