我正在使用匿名联合并尝试了一个简单程序。但我发现我在Varname
变量中输入的内容均未获取。请让我知道差距在哪里。提前致谢。这是程序的代码。
using namespace std;
int main(){
union{
char varName[100];
char varContactNo[20];
};
cout << "Enter your name :";
cin.getline(varName,100);
//cin >> varName;
cout << "\nEnter you contact no :";
cin.getline(varContactNo,20);
//cin >> varContactNo;
cout << "\nPlease reach to Mr./Mrs. " << varName << " at "<< varContactNo;
return 0;
}
该程序的输出为:
Enter your name :Rajan Kashyap
Enter you contact no :8521843071
Please reach to Mr./Mrs. 8521843071 at 8521843071
如果我注释并行并使其成为一个简单的程序,那么它将起作用。
//union{
char varName[100];
char varContactNo[20];
// };
答案 0 :(得分:1)
union
在任何时候都只能包含其成员之一。阅读最后写的成员是合法的。您可能想使用struct
。请注意,C ++不允许使用匿名结构,因此您需要为其命名:
#include <iostream>
using namespace std;
int main(){
struct {
char varName[100];
char varContactNo[20];
} data;
cout << "Enter your name :";
cin.getline(data.varName,100);
//cin >> varName;
cout << "\nEnter you contact no :";
cin.getline(data.varContactNo,20);
//cin >> varContactNo;
cout << "\nPlease reach to Mr./Mrs. " << data.varName << " at "<< data.varContactNo;
return 0;
}