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();
}