我想从一个看起来像这样的file.txt中读取:
process_id run_time
T1 23
T2 75
读取每一行并在数组中存储运行时的整数(制表符分隔)
我现在的问题是要读取文件的内容..以及如何在制表符分离后获取整数?
感谢
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main ()
{
int process_id[100];
int run_time[100];
int arrival_time[100];
char quantum[50];
int switching;
char filename[50];
ifstream ManageFile; //object to open,read,write files
cout<< "Please enter your input file";
cin.getline(filename, 50);
ManageFile.open(filename); //open file using our file object
if(! ManageFile.is_open())
{
cout<< "File does not exist! Please enter a valid path";
cin.getline(filename, 50);
ManageFile.open(filename);
}
while (!ManageFile.eof())
{
ManageFile>>quantum;
cout << quantum;
}
//ManageFile.close();
return 0;
}
答案 0 :(得分:1)
while (!stream.eof())
以下是可能有用的示例:
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <string>
using namespace std;
struct Record {
int process_id;
int run_time;
int arrival_time;
};
int main() {
std::vector<Record> records;
int switching;
std::string filename;
ifstream infile;
while (!infile.is_open()) {
cout << "Please enter your input file: ";
std::getline(std::cin, filename);
infile.open(filename); // open file using our file object
cout << "File cannot be opened.\n";
}
std::string quantum;
std::getline (infile, quantum); // skip header row
while (std::getline(infile, quantum)) {
// e.g.
Record current;
std::istringstream iss(quantum);
if (iss >> current.process_id >> current.run_time >> current.arrival_time)
records.push_back(current);
else
std::cout << "Invalid line ignored: '" << quantum << "'\n";
}
}
答案 1 :(得分:-1)
使用ignore
[http://www.cplusplus.com/reference/istream/istream/ignore/]
istream
函数
while (!ManageFile.eof()) { std::string process_id; int run_time; ManageFile >> process_id; ManageFile.ignore (256, '\t'); ManageFile >> run_time; }
答案 2 :(得分:-1)
您可以尝试这样的事情:
while (!ManageFile.eof())
{
quantum[0] = 0;
ManageFile>>quantum;
if (strcmp(quantum, "0") == 0 || atoi(quantum) != 0)
cout << quantum << endl;
}
当然,你需要包含在头脑中
答案 3 :(得分:-1)
使用fscanf
代替ifstream
可以让工作变得更轻松。
char str[100];
int n;
....
fscanf(FILE * stream,"%s %d", str, &n);
您将获得str
中的字符串和n中的整数。