#include <iostream>
#include <fstream>
using namespace std;
int main() {
int k = 0;
int n;
int y[0];
cout << "write n\n";
cin >> n;
ifstream infile;
infile.open("xxx.in.txt");
infile >> y[0];
infile.close();
for(int x = 0; x < n; x++)
for(int j = 1; j < n; j++)
if(y[x] > y[j])
k = k++;
ofstream outfile;
outfile.open("xxx.out.txt");
outfile << k;
outfile.close();
}
文件xxx.in
包含两行(它是文本文件)。
第一行有n
个数字,第二行有间隔的随机数。
我想从第二行开始阅读。
我该怎么做?
答案 0 :(得分:3)
有几种方法可以从文本文件的第二行获取输入。
如果您知道第一行有多长,可以使用istream::seekg。
ifstream infile;
infile.open("xxx.in.txt");
infile.seekg(length_of_first_line); // This would move the cursor to the second line.
// Code to read line 2.
如果您不知道该值或它可能会改变。然后你需要使用istream::getline并丢弃第一行。
char buffer[256];
ifstream infile;
infile.open("xxx.in.txt");
infile.getline(buffer, 256); // Read in the first line.
// Code to read line 2.
答案 1 :(得分:0)
使用<vector>
,<fstream>
和<sstream>
,您可以使用以下函数中的内容:
using namespace std;
vector<vector<int> > getNumbers(string FileName) {
vector<vector<int> > Numbers; //Stores all the file's numbers
ifstream infile(FileName.c_str());
string String;
int a;
while (getline(infile, String)) {
vector<int> Line; //Stores each line's numbers
stringstream Stream(String);
while (Stream >> a) //Extracts numbers from 'Stream'
Line.push_back(a); //Each number is added to Line
Numbers.push_back(Line); //Each Line is added to Numbers
}
return Numbers;
}
它返回一个ints
的二维向量,其中getFileNumber[x][y]
x
值是行号(从第1行的值0开始),{{1 value是行上数字的位置(第一个数字为0)。
例如,在包含以下内容的文件中
y
464 654334 35665 3456332 4454
2456 788654 3456 5775
号码为3456
要将getFileNumbers[1][2]
向量的全部内容复制到文本文件,您可以这样做:
getFileNumbers
如果您想使用std::vector<std::vector<int> > Numbers = getFileNumbers("xxx.in.txt");
std::ofstream Output("xxx.out.txt");
for (unsigned int y = 0; y < Numbers.size(); ++y) {
for (unsigned int x = 0; x < Numbers[y].size(); ++x)
Output << Numbers[y][x] << ' ';
Output << '\n';
}
输出文件的行x
,请执行以下操作:
std::cout
如果您想将行std::vector<std::vector<int> > Numbers = getFileNumbers("xxx.in.txt");
for (unsigned int i = 0; i < Numbers[x].size(); ++i)
std::cout << Numbers[x][i] << ' ';
输出到文件,只需将x
替换为std::cout
或std::ofstream
对象。