0

ファイルには、電話番号のリストが次の形式で含まれています。

John            23456
Ahmed        9876
Joe 4568

名前には単語のみが含まれ、名前と電話番号は空白で区切られています。ファイルを読み取り、リストを 2 列で出力するプログラムを作成します。名前は左揃え、数字は右揃えにする必要があります。

空白を削除して表示することはできましたが、出力で揃えることができません。

#include<iostream>
#include<fstream>
#include<conio.h>
using namespace std;
main()
{
    fstream file,f2;
    file.open("list.txt",ios::in|ios::out);
    f2.open("abcd.txt",ios::out);
    file.seekg(0);

    char ch,ch1;
    file.get(ch);

    while(file)
    {
        ch1 = ch;
        file.get(ch);

        if( ch == ' ' && ch1 != ' ')
        {
            f2.put(ch1);
            f2.put(' ');
        }

        if(ch != ' ' && ch1 != ' ')
            f2.put(ch1);
    }

    file.close();
    f2.close();
    getch();
}
4

2 に答える 2

2

最も単純で簡単です (偏執的な入力形式のチェックはありません):

#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>

int main()
{
    std::ifstream ifs("list.txt");

    std::string name; int val;
    while (ifs >> name >> val)
    {
        std::cout << std::left  << std::setw(30) << name << 
                     std::right << std::setw(12) << val << std::endl;
    }
}

出力:

John                                 23456
Ahmed                                 9876
Joe                                   4568
于 2013-01-29T13:15:35.063 に答える
0

出力ストリームに適切なフラグを設定するだけです(f2あなたの場合は出力ストリームです)。次の記事を参照してください: http://www.cplusplus.com/reference/ios/ios_base/width/

あなたの例では、どちらも から継承する出力ストリームcoutであるため、 に置き換えます。f2ios_base

于 2013-01-29T13:10:06.670 に答える