gpt4 book ai didi

c++ - 从文件读取时如何跳过数组的第一行?

转载 作者:行者123 更新时间:2023-11-30 01:22:44 25 4
gpt4 key购买 nike

我正在尝试从文本文件中读取值,然后将它们粘贴到一个数组中。我使用的文本文件是这样的;

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

我试图将它们读入一个数组,然后输出该数组。我必须做其他事情(更改用户输入的值),但我知道该怎么做。我的问题是这样的;当我运行它时,它读取 BigStone,并将它们放入值中。这不是我想要的;它应该类似于 Red_Tailed_Hawk1。我的代码如下;我不知道该怎么做才能让它正常工作。请原谅一些变数;我从另一个使用 int 数组而不是字符串数组的项目中删除了这个脚本。

#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];
}

最佳答案

您可以使用以下内容跳过第一行:

inData.ignore(numeric_limits<streamsize>::max(), inData.widen('\n'));

std::istream::ignore 引用:http://www.cplusplus.com/reference/istream/istream/ignore/

附言。第一个参数是要忽略的最大字符数。 numeric_limits::max() 意味着你想忽略直到字符串结束,不管字符串有多长。

关于c++ - 从文件读取时如何跳过数组的第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15845518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com