匿名联盟数据成员值冲突

时间:2020-06-20 07:17:35

标签: c++

我正在使用匿名联合并尝试了一个简单程序。但我发现我在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];
//  };

1 个答案:

答案 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;   
}