C++ 无法读取结构向量的数据
我写这些代码是为了从文件中读取数据,然后写入结构中定义的各种向量。你能告诉我为什么我不能用另一个函数(在这种情况下写表)访问它们吗。谢谢C++ 无法读取结构向量的数据,c++,fstream,C++,Fstream,我写这些代码是为了从文件中读取数据,然后写入结构中定义的各种向量。你能告诉我为什么我不能用另一个函数(在这种情况下写表)访问它们吗。谢谢 #包括 #包括 #包括 #包括 使用名称空间std; 无效读取数据(字符串文件名); void write_表(); 结构记录{ 载体myv; 矢量bwv; }; int main() { 读取数据(“data.txt”); 记录o; 写入表(o); } 无效读取数据(字符串文件名) { 记录r; ifstream data_in(file_name.c_st
#包括
#包括
#包括
#包括
使用名称空间std;
无效读取数据(字符串文件名);
void write_表();
结构记录{
载体myv;
矢量bwv;
};
int main()
{
读取数据(“data.txt”);
记录o;
写入表(o);
}
无效读取数据(字符串文件名)
{
记录r;
ifstream data_in(file_name.c_str());
流数据的静态输出(“tuna.txt”);
如果(!数据_in)
{
coutbw)
{
{
r、 myv.向后推(my);
r、 bwv.推回(bw);
}
}
数据_in.close();
}
数据输出您需要通过参数或返回值跨读取数据和写入表传递记录的对象
如果它由read\u data
和write\u table
共享和处理,为什么不将read\u data
和write\u table
成员函数封装到一个类中呢
class Record {
private:
vector <string> myv;
vector <string> bwv;
public:
void read_data (string file_name);
void write_table ();
};
void Record::read_data (string file_name) {
// using myv and bwv...
}
void Record::write_table () {
// using myv and bwv...
size_t size = myv.size();
for (size_t i=0; i<size; i++)
{
cout<<myv[i]<<'\t'<<bwv[i]<<endl;
}
}
int main ()
{
Record o;
o.read_data("data.txt");
o.write_table();
}
课堂记录{
私人:
载体myv;
矢量bwv;
公众:
无效读取数据(字符串文件名);
void write_表();
};
无效记录::读取数据(字符串文件名){
//使用myv和bwv。。。
}
无效记录::写入表(){
//使用myv和bwv。。。
size_t size=myv.size();
对于(size_t i=0;i您向前声明一个没有参数的函数,然后在main
中传递参数。我不知道“为什么我不能访问它们”是什么意思,因为如果您愿意,您可以。我将函数原型编辑为:void write_table(Record bo);但它仍然不起作用。创建一个强调清晰的问题陈述和复制它所需的最短代码。我已经将所有此类数据函数包装到一个类中。但是,仍然无法达到写表函数的目的。@hieu“无法达到写表函数的目的”是什么意思?仍然无法访问向量?@hieu无法理解你的意思。我已经编辑了我的答案,试着写write_table()
,可以吗?它成功了,非常感谢!而且代码在类中包装时看起来更有条理。再次感谢。@hieu很高兴能提供帮助。:D
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include "Record.h"
using namespace std;
int main ()
{
Record r;
r.read_data("data.txt");
}
#ifndef RECORD_H
#define RECORD_H
#include <vector>
#include <string>
using namespace std;
class Record
{
public:
Record();
void read_data (string file_name);
private:
vector <string> myv;
vector <string> bwv;
};
#endif // RECORD_H
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include "Record.h"
using namespace std;
Record::Record()
{
//ctor
}
void Record::read_data (string file_name)
{
ifstream data_in (file_name.c_str());
static ofstream data_out ("tuna.txt");
if (!data_in)
{
cout<<"Failed to open file"<<endl;
}
else
{
string dummyline;
getline (data_in, dummyline);
string my, bw;
while (data_in>>my>>bw)
{
{
myv.push_back(my);
bwv.push_back(bw);
}
}
data_in.close();
}
}
class Record {
private:
vector <string> myv;
vector <string> bwv;
public:
void read_data (string file_name);
void write_table ();
};
void Record::read_data (string file_name) {
// using myv and bwv...
}
void Record::write_table () {
// using myv and bwv...
size_t size = myv.size();
for (size_t i=0; i<size; i++)
{
cout<<myv[i]<<'\t'<<bwv[i]<<endl;
}
}
int main ()
{
Record o;
o.read_data("data.txt");
o.write_table();
}