我是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;
}
答案 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)
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
通常更容易,并使其成为
正确的大小开始。