在C ++中以列方式将数据写入文本文件

时间:2013-03-28 11:34:28

标签: c++ file file-io

我是C ++的初学者。我通过一个对象数组输入变量的值(属于一个类)。现在如何将它们写入文本文件列如下?感谢.........

SLNO    NAME      ADDRESS        PHONE NO     TYPE      
   1.   ABC       xyzagsgshsh    27438927     Mobile
   2.   QWE       qwhjbbdh       78982338     Landline

这是我存储数据的代码。如何将其制作成文本文件,其内容如下所示?

#include<iostream>
#include<string>
#include<fstream>
using namespace std;

class emp
{
    string name,address,phone,type;
    public:
    void getdata();
}obj[5];

void emp::getdata()
{
    cout<<"\nEnter the details:";
    cout<<"\nName: ";cin>>name;
    cout<<"Address:";
    cin>>address;
    cout<<"Phone number: "; cin>>phone;
    cout<<"\nType of phone? (Landline/Mobile) :";
    cin>>type;
}

int main()
{
    ofstream ptr;
    ptr.open("Phone.dat",ios::out);
    cout<<"\nEnter the no.of.records: ";
    int n,i;
    cin>>n;
    for(i=0;i<n;i++)
    {
        obj[i].getdata();
        ptr.write((char*)&obj[i],sizeof(obj[i]));
    }
    return 0;
}

3 个答案:

答案 0 :(得分:2)

由于您已经创建了一个文件流,您可以利用输出标志(std :: left,std :: right和std :: setw):

http://www.cplusplus.com/reference/iomanip/setw/

http://www.cplusplus.com/reference/ios/left/

现在,为了确保存储在emp类的任何对象中的任何字符串不超过通过std :: setw分配给ofstream / ostream的大小,可以使用string :: resize。

答案 1 :(得分:0)

您可以使用字符串/ file流,换行符和std::setw

ofstream myfile;
myfile.open ("example.txt");
myfile << "SLNO" << std::setw(10) << "NAME" << std::setw(10) << "ADDRESS" << std::setw(10) << "PHONE NO" << std::setw(10) << "TYPE\n";

这会将所有文字与10-text lenght个空格隔开,并将其放入example.txt

记得检查文件的有效性并关闭文件。

答案 2 :(得分:0)

这取决于具体情况。用于简单输出到控制台 窗口(或者如果你在其他地方有一个固定宽度的字体,但那是 相当罕见),你可以在每个元素之前使用std::setw, 指定字段的宽度。对于文字(std::string), 然而,使用resize通常更容易,并使其成为 正确的大小开始。