从文件读取时,如何跳过数组的第一行? [英] How do I skip the first line of an array when reading from a file?
问题描述
我试图从文本文件中读取值,然后将它们粘贴到数组中。我使用的文本文件是这样的;
I'm trying to read values from a text file and then stick them into an array. The text file I'm using is like this;
Big Stone Gap,VA
Red-tailed_Hawk 1
Mourning_Dove 66
Red-bellied_Woodpecker 5
Yellow-bellied_Sapsucker 1
Downy_Woodpecker 4
Pileated_Woodpecker 2
Blue_Jay 8
American_Crow 89
Carolina_Chickadee 8
Black-capped_Chickadee 6
Tufted_Titmouse 12
Red-breasted_Nuthatch 2
White-breasted_Nuthatch 9
Carolina_Wren 3
American_Robin 1
Northern_Mockingbird 1
European_Starling 5
Eastern_Towhee 3
Field_Sparrow 13
Fox_Sparrow 1
Song_Sparrow 8
White-throated_Sparrow 11
Dark-eyed_Junco 9
Northern_Cardinal 30
Purple_Finch 7
House_Finch 6
American_Goldfinch 29
尝试将它们读入数组,然后输出数组。我必须做其他的东西,(改变从用户输入的值),但我知道如何做到这一点。我的问题是这个;当我运行它,它读取 Big
和 Stone
,并将它们放入值。这不是我想要的;它应该是 Red_Tailed_Hawk
和 1
。我有我的代码如下;我不知道该怎么做才能使它正常工作。请原谅一些变量;我使用int数组而不是字符串数组来处理这个脚本。
I'm trying to read them into an array, and then output the array. I have to do other stuff, (alter the values from user input), but I know how to do that. My problem is this; When I run it, it reads Big
and Stone
, and puts them into the values. This isn't what I want; It should be something like Red_Tailed_Hawk
and 1
. I have my code below; I have no idea what to do to get it to work right. Please excuse some of the variables; I cannibalized this script from another project I did with int arrays instead of string arrays.
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
const int NUMBER_OF_STUDENTS = 28;
const int NUMBER_OF_SCORES = 28;
void getData (ifstream& infile, string matrix[][NUMBER_OF_SCORES + 1 ],
int NUMBER_OF_STUDENTS) ;
void printMatrix(string matrix[][NUMBER_OF_SCORES + 1], int NUMBER_OF_STUDENTS);
int main()
{
string birdarray [NUMBER_OF_STUDENTS][NUMBER_OF_SCORES +1 ] ;
// column 0 will hold the student ID.
// row n has the ID and birdarray for student n.
ifstream inData; //input file stream variable
inData.open("one.txt");
if ( !inData)
{
cout << "invalid file name \n";
return 1;
}
// input the birdarray into two-D array birdarray
getData ( inData , birdarray, NUMBER_OF_STUDENTS );
printMatrix(birdarray, NUMBER_OF_STUDENTS);
// return the row number of a searchItem in a particular column.
// if not found, return -1
}
void getData (ifstream& infile,string chart[][NUMBER_OF_SCORES + 1 ],
int student_count)
{
int row, col;
for ( row = 0; row < student_count; row++)
for (col =0; col < NUMBER_OF_SCORES +1 ; col++)
infile >> chart [row] [col] ;
}
void printMatrix(string matrix[][NUMBER_OF_SCORES + 1], int NUMBER_OF_STUDENTS)
{
int row, col;
//this code below is to loop it so it displays all the values
// for (row = 0; row < NUMBER_OF_STUDENTS + 1; col++)
// {
// cout << right << matrix[row][col];
// cout << endl;
//}
//this is just some test code to see if it can output certain values right
cout << matrix[0][2];
cout << matrix[0][3];
cout << matrix[0][4];
cout << matrix[0][5];
}
推荐答案
string line;
getline(infile, line)
for ( row = 0; row < row_count; row++)
for (col =0; col < column_count +1 ; col++)
getline(infile, line);
chart[row][col] = line;
Streams的行为类似于它们的同名。你不能跳过流中的内容,例如跳过数组,你可以做的是忽略的东西,因为它漂浮。
Streams behave like their namesake. You can't skip what comes in the stream like jumping through an array, all you can do is ignore stuff as it floats by.
这篇关于从文件读取时,如何跳过数组的第一行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!