1

仅供参考,我是 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;

}

4

3 回答 3

5

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

于 2013-04-04T19:40:17.727 回答
1

如果你的 ID 总是有特定的长度,你可以使用 C 的printf函数而不是流,这会给你更多的权力;

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

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

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

于 2013-04-04T19:43:32.183 回答
0

如果您出于某种原因需要或想要保留学生证号码,您也可以使用以下方法:

#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;

如果您的 ID 号码长度不同,您将必须检测它们的长度并在每个 setw() 调用中使用适当的宽度。

于 2013-04-04T20:14:21.947 回答