簡體   English   中英

使用getline和vector的C ++問題

[英]Issue with C++ using getline and vector

我有一個問題,我正在使用getline從文件中讀取行,並使用stringstream來分隔不同的變量(使用逗號作為定界符)。 問題是變量的標准提示正確顯示了seatDes,但是使用向量我得到的名稱卻不是seatDes。 不知道為什么會這樣。

文件中的標准行:Jane Doe,04202013,602,1A

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <cstdlib>

#include "reservation.h"

int main(int argc, char **argv)
{
std::ifstream flightFile;
std::string name, date, seatDes, flightNum, line;
int error = 0, conFlightNum;

flightFile.open("reservations.txt");

if(!flightFile)
{
    //returns a error value if there is a problem reading the file
    error = 1;
    return error;
}
else
{
    //Start reading files and sticks them into a class object and sticks the object into         the vector set        
    while (std::getline(flightFile, line))
    {
       std::istringstream ss(line);
       std::getline(ss, name, ',');
       std::getline(ss, date, ',');
       std::getline(ss, flightNum, ',');
       conFlightNum = atoi(flightNum.c_str());
       ss >> seatDes;
       reservation newRes(name, date, conFlightNum, seatDes);
       std::cout << name << std::endl << date << std::endl << conFlightNum << std::endl << seatDes << std::endl;
       std::cout << "Vector Component" << std::endl;
       std::cout //<< newRes.getName() << std::endl << newRes.getDate() << std::endl << newRes.getFlightNum() 
       << std::endl << newRes.getSeatDesg() << std::endl;
    }
}


flightFile.close();
return 0;
}

Reservation.h文件

class reservation {
private:
std::string name, seatDesg, date;
int flightNum;

public:
//Default Constructor
reservation(){}
//Big Constructor
reservation(std::string name, std::string date, int flightNum, std::string seatDesg)
{
    this->name = name;
    this->seatDesg = name;
    this->date = date;
    this->flightNum = flightNum;
}

//Setters
void setName(std::string name)
{ this->name = name; }

void setFlightNum(int flightNum)
{ this->flightNum = flightNum; }

void setSeatDesg(std::string seatDesg)
{ this->seatDesg = seatDesg; }

void setDate(std::string date)
{ this->date = date; }

//Getters
std::string getName()
{ return name; }

std::string getSeatDesg()
{ return seatDesg; }

std::string getDate()
{ return date; }

int getFlightNum()
{ return flightNum; }

};
reservation(std::string name, std::string date, int flightNum, std::string seatDesg)
{
    this->name = name;
    this->seatDesg = name;  // Here is your problem
    this->date = date;
    this->flightNum = flightNum;
}

應該

this->seatDesg = seatDesg;  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM