使用C ++中的ifstream逐行讀取文件file.txt的內容是:5 36 47 110 511 612 312 45 3坐標對在哪里。如何在C ++中逐行處理此數據?我能夠得到第一行,但是如何獲得文件的下一行?ifstream myfile;myfile.open ("text.txt");
4 回答
ABOUTYOU
TA貢獻1812條經驗 獲得超5個贊
由于你的坐標是成對的,為什么不為它們寫一個結構?
struct CoordinatePair{
int x;
int y;};然后你可以為istreams編寫一個重載的提取運算符:
std::istream& operator>>(std::istream& is, CoordinatePair& coordinates){
is >> coordinates.x >> coordinates.y;
return is;}然后你可以直接將坐標文件讀入這樣的矢量:
#include <fstream>#include <iterator>#include <vector>int main(){
char filename[] = "coordinates.txt";
std::vector<CoordinatePair> v;
std::ifstream ifs(filename);
if (ifs) {
std::copy(std::istream_iterator<CoordinatePair>(ifs),
std::istream_iterator<CoordinatePair>(),
std::back_inserter(v));
}
else {
std::cerr << "Couldn't open " << filename << " for reading\n";
}
// Now you can work with the contents of v}- 4 回答
- 0 關注
- 4095 瀏覽
添加回答
舉報
0/150
提交
取消
