2017-09-23 4 views
0

私はC++の新機能です。私は、ユーザーに名前、年齢、ハンドフォン番号、大学を入力させるプロジェクトを作成します。カラムオートアライメントC++

コードは次のように思える:

名:ジョン・シナ
年齢:20
電話番号:1234568903
大学:マルチメディア

#include<iostream> 
#include<iomanip> 
#include<vector> 

using namespace std; 

int main(){ 
vector<string>name; 
vector<string>age; 
vector<string>hpno; 
vector<string>university; 

string sname, sage, shpno, suniversity; 

cout << "Enter name:" << endl; 
getline(cin, sname); 
name.push_back(sname); 

cout << "Enter age:" << endl; 
getline(cin, sage); 
age.push_back(sage); 

cout << "Enter phone number:" << endl; 
getline(cin, shpno); 
hpno.push_back(shpno); 

cout << "Enter university:" << endl; 
getline(cin, suniversity); 
university.push_back(suniversity); 

cout << "Name" <<" "<< "Age" <<" "<< "Handphone Number" <<" "<< "University" 
    <<endl;  

for (int j = 0 ; j <= name.size() - 1 ; j++){ 
cout << name[j] << " " << age[j] << " " << hpno[j] << " " << 
university[j]<<endl;} 

} 

は、ユーザーの入力は次のようであるとしましょう大学

私が望む出力は次のようなものです:
Name Age Phone Number University John Cena 20 1234568903 Multimedia University


しかし、私が手出力は次のようである:
Name Age Phone Number University John Cena 20 1234568903 Multimedia University

ヘッダの幅は、コンテンツの幅と同期させるには?

答えて

2

幅を設定する必要があると思います。 これはC++にはsetw()があります。

http://www.c4learn.com/cplusplus/cpp-setw-setting-field-width/

はあなたがSTDを必要とする。この場合には、このリンク

+0

代わりにあなたの答えにその使用法を説明してみませんか? –

1

まず他のヘッダから無料乗車に依存しない、行方不明<string>ヘッダが含まれます。そして、タイトルとデータ出力の両方にstd::leftstd::setwストリームマニピュレータを利用:

std::cout << std::left << std::setw(10) << "Name" 
    << std::setw(10) << "Age" 
    << std::setw(20) << "Handphone Number" 
    << std::setw(10) << "University" 
    << std::endl; 

for (int j = 0; j <= name.size() - 1; j++){ 
    cout << std::setw(10) << name[j] 
     << std::setw(10) << age[j] 
     << std::setw(20) << hpno[j] 
     << std::setw(10) << university[j] << endl; 
} 

注:一部のマニピュレータが他はそうではありませんし、複数回を含める必要があり、永続的であり、一度だけ含める必要があります。 Avoidusing namespace std