64,636
社区成员
发帖
与我相关
我的任务
分享
还是这个问题啊,
//用C++写了一下, 效率比较低的,C语言不怎么熟悉了, 不用忘了,
//写文件,每个结构体记录占一行;
#include <string>
#include <cassert>
#include <fstream>
#include <iostream>
using namespace std;
typedef struct Data
{
int a;
//char *p;
string str;
}DATA;
int main()
{
DATA d_W;
d_W.a = 123;
d_W.str = "this is a test!";
ofstream outFile("c:\\test.txt");
assert(outFile!=NULL);
outFile<<d_W.a<<" ";
for(int i=0; i<strlen(d_W.str.c_str()); i++) outFile<<d_W.str[i];
outFile<<endl;
outFile.close();
cout<<d_W.a<<d_W.str<<endl;
system("pause");
return 0;
}
//读取记录;先将内容读取到string的line中,在取分割;取出内容;
#include <string>
#include <cassert>
#include <vector>
#include <fstream>
#include <iostream>
using namespace std;
//字符串分割函数;
vector< string> split(string s, string delim)
{
int last = 0;
vector<string> ret;
for(int i = 0; i + delim.size() <= s.size(); i++)
{
bool ok = true;
for(int j = 0; j < delim.size() && ok; j++)
ok = s[i + j] == delim[j];
if(ok)
{
if(i - last) ret.push_back(s.substr(last, i - last));
last = i + delim.size();
}
}
if(last < s.size()) ret.push_back(s.substr(last));
return ret;
}
typedef struct Data
{
int a;
string str;
}DATA;
int main()
{
DATA data;
ifstream inFile("c:\\test.txt");
assert(inFile!=NULL);
string line;
getline(inFile, line, '\n');
vector<string>& dest=split(line, string(" ")); //空格分割;
data.a=atoi(dest[0].c_str()); //得到数据;
for(int i=1;i<dest.size(); i++) dest[i].append(" ");//追加空格;
for(int i=1;i<dest.size(); i++) data.str+=dest[i]; //得到DATA::str;
inFile.close();
cout<<data.a<<endl;
cout<<data.str<<endl;
system("pause");
return 0;
}