嗨,我正在开发一个读取两个文件的程序,我想在自己的列中显示文件内容。
File1 File2
Time data Time data
我不会放弃确定如何创建列,我已经有了代码来读取文件并执行所需的功能,这是我难以接受的输出。如果有人有任何建议或帮助,那将是非常棒的。谢谢! PS。这不是家庭作业相关。
答案 0 :(得分:1)
这实际上取决于您计划使用的工具......
您可以使用某些版本的“curses”(具有控制台操作功能的库,例如“转到此位置”,“以绿色打印文本”等),然后随意浏览屏幕。
或者你可以将文件读入单独的变量,然后在循环中从每个文件打印。这不需要特殊编码。只需使用数组或向量作为文件本身以及从中读取的数据。
这样的事情:
const int nfiles = 2;
const char *filenames[nfiles] = { "file1.txt", "file2.txt" };
ifstream files[nfiles];
for(int i = 0; i < nfiles; i++)
{
if (!files[i].open(filenames[i]))
{
cerr << "Couldn't open file " << filenames[i] << endl;
exit(1);
}
}
bool done = false;
while(!done)
{
int errs = 0;
std::string data[nfiles];
for(int i = i < nfiles; i++)
{
if (!(files[i] >> data[i]))
{
errs++;
data[i] = "No data";
}
}
if (errs == nfiles)
{
done = true;
}
else
{
for(int i = 0; i < nfiles; i++)
{
... display data here ...
}
}
}
答案 1 :(得分:1)
我会做这样的事情:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <string>
using namespace std;
int readLines(const std::string& fileName1, const std::string& fileName2)
{
string line1;
string line2;
ifstream file1 (fileName1.c_str());
ifstream file2 (fileName2.c_str());
if (file1.is_open() && file2.is_open())
{
cout << setw(20) << left << "File1" << "File2" << endl;
bool done;
done = file1.eof() && file2.eof();
while (!done)
{
getline (file1, line1);
getline (file2, line2);
line1.erase(std::remove(line1.begin(), line1.end(), '\n'), line1.end());
line2.erase(std::remove(line2.begin(), line2.end(), '\n'), line2.end());
cout << setw(20) << left << (file1.eof() ? "" : line1) << (file2.eof() ? "" : line2) << endl;
done = file1.eof() && file2.eof();
}
file1.close();
file2.close();
}
else
{
cout << "Unable to open some file";
}
return 0;
}
int main ()
{
std::string fileName1("example1.txt");
std::string fileName2("example2.txt");
readLines(fileName1, fileName2);
return 0;
}