我有一个像这样的c ++程序:
#include<iostream>
using namespace std;
class A
{
public:
void display();
};
void A::display() {
cout<<"This is from first program";
}
int main()
{
A a1;
a1.display();
return 0;
}
我想将a1保存到文件中,并使用另一个c ++程序中的this对象来调用display函数。可能吗?是否可以在两个c ++程序中都有main()函数?我是C ++的新手。请帮帮我。
答案 0 :(得分:1)
鉴于您的意见,我相信您在第一个计划中寻找std::ofstream
,在第二个计划中寻找std::ifstream
。如果程序A是您的第一个具有非常大的代码库的程序而程序B是您想要显示程序A中的数据的第二个程序,则程序A将使用std::ofstream
而程序B将使用std::ifstream
}。
如果您按照链接进行操作,您将找到他们所做操作的说明,并在页面底部显示代码示例。不要从程序A开始,需要7-8个小时来计算。在您甚至可以使用数据进行输入之前,您必须确保输出正确,并且路上的任何错误都意味着您必须重新启动。如果您想测试并手动验证数据,可以跳过第二个参数std::ofstream ostrm(filename)
,但是您需要重新操作流的操作方式。根据您的数据,这将是操作的关键部分。
// Code example from cppreference - ofstream
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::string filename = "Test.b";
{
// This will create a file, Test.b, and open an output stream to it.
std::ofstream ostrm(filename, std::ios::binary);
// Depending on your data, this is where you'll modify the code
double d = 3.14;
ostrm.write(reinterpret_cast<char*>(&d), sizeof d); // binary output
ostrm << 123 << "abc" << '\n'; // text output
}
// Input stream which will read back the data written to Test.b
std::ifstream istrm(filename, std::ios::binary);
double d;
istrm.read(reinterpret_cast<char*>(&d), sizeof d);
int n;
std::string s;
istrm >> n >> s;
std::cout << " read back: " << d << " " << n << " " << s << '\n';
}
将数据正确输出到文件后,您可以通过创建std::ifstream
来读取数据。确保验证流已打开:
std::ifstream istrm(filename, std::ios::binary);
if(istrm.is_open())
{
//Process data
}
答案 1 :(得分:0)
这将是你的File.h
#ifndef FILE_H
#define FILE_H
class A
{
public:
void display();
};
#endif
这将是你的File.cpp
#include <iostream>
#include "File.h"
void A::display() {
std::cout<<"This is from first program";
}
这将是你main.cpp
#include <iostream>
#include "File.h"
int main()
{
A a1;
a1.display();
return 0;
}
您可以使用g++ File.cpp main.cpp