输出显示无零

时间:2013-04-04 19:39:16

标签: c++

仅供参考我是C ++的初学者。这只是完整代码的一部分,问题是'student.id',如果输入以'0'开头,例如'06042010',输出显示没有零(在这种情况下将是'6042010'!并且重点是,我希望第一个零显示。谢谢。

#include<iostream>
using namespace std;

struct students
{
    char name[15];
    char surname[10];
    int id;

};

int main()
{
    students student;

cout<<"Name: ";
cin>>student.name;
cout<<"Surname: ";
cin>>student.surname;
cout<<"ID: ";
cin>>student.id;

cout<<"\nStudent: "<<student.name<<" "<<student.surname<<" ID "<<student.id<<endl;

return 0;

}

3 个答案:

答案 0 :(得分:5)

如果您需要保留前导零,则应将id存储为字符串,而不是int

答案 1 :(得分:1)

如果您的ID始终是特定长度,则可以使用C的printf功能代替流,这样可以提供更多功能;

printf( "Student: %s %s ID %08d\n", student.name, student.surname, student.id );

这将始终打印ID的8位数字,并且根据需要将前缀为0(如果它只是%8d,它将以空格为前缀)。

但正如已经指出的那样,最好将其存储为字符串,因为这样您将来可以增加ID的长度,而无需调整所有旧ID。

答案 2 :(得分:0)

如果您因某种原因需要或想要保留学生ID,您还可以使用以下内容:

#include <iomanip>

const int width = 8; //The length of your student ID numbers

cout << "\nStudent: " << student.name << " " <<student.surname
     << " ID " << setfill('0') << setw(width) << student.id << setfill(' ') << endl;

如果您的身份证号码长度不同,则必须检测身份证号码的长度,并在每次setw()呼叫中使用适当的宽度。