仅供参考我是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;
}
答案 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()呼叫中使用适当的宽度。