1

次の情報を含むファイルがあります。

INTERSECTIONS:
1   0.3 mountain and 1st
2   0.9 mountain and 2nd
3   0.1 mountain and 3rd

最初の番号をスキャンして int に格納し、次の番号をスキャンして個別に格納し、通りの名前を文字列に格納するように c++ でスキャンするにはどうすればよいですか? 私はcから切り替えたばかりなので、使用するだけでCでそれを行う方法を知っています

fscanf("%d %lf %s", int, float, string);

また

fgets

文字列を使用しますが、C++ でこれを行う方法がわかりません。どんな助けでもいただければ幸いです

主要:

#include<iostream>
#include<list>
#include <fstream>
#include<cmath>
#include <cstdlib>
#include <string>
#include "vertex.h"
#include "edge.h"
#include "global.h"
using namespace std;

int main ( int argc, char *argv[] ){
    if(argc != 4){
        cout<< "usage: "<< argv[0]<<"<filename>\n";
    }
    else{
        ifstream map_file (argv[3]);
        if(!map_file.is_open()){
            cout<<"could not open file\n";
        }
        else{
            std::string line;
            std::ifstream input(argv[3]);
            int xsect;
            int safety;
            std:string xname;

            std::list<vertex> xsection;
            std::list<edge> EdgeList;

            while (std::getline(input, line))
            {
              std::istringstream iss(line);

                iss >> xsect >> safety;

               std::getline(iss, xname);
            }

            }
        }
}   
4

1 に答える 1

4

std::getlineandstd::istringstreamと標準の C++ ストリーム入力演算子で十分です。

std::string line;
std::ifstream input(...);

while (std::getline(input, line))
{
    std::istringstream iss(line);

    int v1;
    double v2;
    std::string v3;

    iss >> v1 >> v2;

    std::getline(iss, v3);
}
于 2012-12-04T20:42:24.857 に答える