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

1

ID が常に特定の長さである場合はprintf、ストリームの代わりに C の関数を使用できます。これにより、より強力になります。

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

何らかの理由で学生 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;

ID 番号がすべて同じ長さでない場合は、それらの長さを検出し、各 setw() 呼び出しで適切な幅を使用する必要があります。

于 2013-04-04T20:14:21.947 に答える