在C+中按列向文本文件写入数据+; 我是C++初学者。我已经通过一个对象数组输入了变量(属于一个类)的值。现在,我如何将它们按如下方式写入文本文件列??谢谢 SLNO NAME ADDRESS PHONE NO TYPE 1. ABC xyzagsgshsh 27438927 Mobile 2. QWE qwhjbbdh 78982338 Landline

在C+中按列向文本文件写入数据+; 我是C++初学者。我已经通过一个对象数组输入了变量(属于一个类)的值。现在,我如何将它们按如下方式写入文本文件列??谢谢 SLNO NAME ADDRESS PHONE NO TYPE 1. ABC xyzagsgshsh 27438927 Mobile 2. QWE qwhjbbdh 78982338 Landline,c++,file,file-io,C++,File,File Io,这是我用来存储数据的代码。如何将其制作成包含以下内容的文本文件 #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<

这是我用来存储数据的代码。如何将其制作成包含以下内容的文本文件

#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;
}
#包括
#包括
#包括
使用名称空间std;
类电磁脉冲
{
字符串名称、地址、电话、类型;
公众:
void getdata();
}obj[5];
void emp::getdata()
{
cout您可以使用字符串/流、换行符和

流myfile的
;
myfile.open(“example.txt”);

myfile它取决于上下文。对于控制台的简单输出 窗口(或者如果您在其他地方有固定宽度的字体,但这是 非常罕见),您可以在每个元素之前使用
std::setw
, 指定字段的宽度。对于文本(
std::string
), 但是,只需使用
调整大小
,并使其成为
开始时大小正确。

因为您已经创建了文件流,所以可以利用输出标志(std::left、std::right和std::setw):


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

如果您输入了这些值,那么您已经完成了硬操作,所以我有点困惑您为什么要停留在输出上。您能展示一下您编写的代码吗到目前为止,或者解释一下你一直坚持的是什么。你的问题有点模糊。从学习标准库的格式化输出功能开始。你可以在上找到它们的全部内容,或者查找“C++格式化输出”在google上。@john:代码如上所述。我需要将Phone.dat文件转换成前面提到的文本文件。@Razius您不需要使用
write
,它用于二进制数据,只需
ptr注意,默认情况下,
ostream
右对齐。(这通常是数值所需要的。)因此,直接在输出的字符串上使用
resize
通常更容易。但是我输入的值是否会存储到右列下的文本文件中?如果输入空格数(请确保列文本的长度永远不会大于setw(x)),其中x是您的列可以包含的总字符数+空格数),是。例如,如果您在列之前设置了w(10),但在其中输入的文本长度为12个字符,则整行将不对齐。
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";