猿问

使用C ++中的ifstream逐行读取文件

使用C ++中的ifstream逐行读取文件

file.txt的内容是:


5 3

6 4

7 1

10 5

11 6

12 3

12 4

5 3坐标对在哪里。如何在C ++中逐行处理此数据?


我能够得到第一行,但是如何获得文件的下一行?


ifstream myfile;

myfile.open ("text.txt");


紫衣仙女
浏览 4033回答 4
4回答

ABOUTYOU

由于你的坐标是成对的,为什么不为它们写一个结构?struct&nbsp;CoordinatePair{ &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;x; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;y;};然后你可以为istreams编写一个重载的提取运算符:std::istream&&nbsp;operator>>(std::istream&&nbsp;is,&nbsp;CoordinatePair&&nbsp;coordinates){ &nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;>>&nbsp;coordinates.x&nbsp;>>&nbsp;coordinates.y; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;is;}然后你可以直接将坐标文件读入这样的矢量:#include&nbsp;<fstream>#include&nbsp;<iterator>#include&nbsp;<vector>int&nbsp;main(){ &nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;filename[]&nbsp;=&nbsp;"coordinates.txt"; &nbsp;&nbsp;&nbsp;&nbsp;std::vector<CoordinatePair>&nbsp;v; &nbsp;&nbsp;&nbsp;&nbsp;std::ifstream&nbsp;ifs(filename); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ifs)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::copy(std::istream_iterator<CoordinatePair>(ifs),&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::istream_iterator<CoordinatePair>(), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::back_inserter(v)); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cerr&nbsp;<<&nbsp;"Couldn't&nbsp;open&nbsp;"&nbsp;<<&nbsp;filename&nbsp;<<&nbsp;"&nbsp;for&nbsp;reading\n"; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Now&nbsp;you&nbsp;can&nbsp;work&nbsp;with&nbsp;the&nbsp;contents&nbsp;of&nbsp;v}
随时随地看视频慕课网APP
我要回答