Я читаю в Netflix шоу из файла CSV в массив моего объекта с помощью getline.Некоторые строки имеют две запятые, поэтому, когда getline встречает первую, она останавливается на половине строки, разделяющей ее.Например, «грубый и сексуальный юмор, язык и содержание некоторых наркотиков» можно разделить на «грубый и сексуальный юмор» и «язык и содержание некоторых наркотиков».Это влияет на остальные данные, так как getline запускается снова с неправильной точки в файле.Есть ли способ, которым я могу игнорировать первую запятую, чтобы полная строка сохранялась в соответствующей переменной в массиве?
Это первые три строки в файле csv:
White Chicks,PG-13, грубый и сексуальный юмор, язык и содержание некоторых наркотиков, 80,2004,82,80
Lucky Number Slevin, R, сильное насилие, сексуальное содержание и язык взрослых, 100,2006, NA, 82
Анатомия Грея, TV-14, родители настоятельно предупреждают.Может быть неподходящим для детей в возрасте 14 лет и младше. 90,2016,98,80
Это код в main.cpp
#include <iostream>
#include "Video.h"
using namespace std;
int main() {
Video playlist;
Video Netflixplaylist[1000];//Declare Video array
playlist.CreatePlaylist(Netflixplaylist);
cout << Netflixplaylist[0].media1.title << endl;
cout << Netflixplaylist[1].media1.title << endl;//Test if data was properly stored
return 0;
}
Это код в Video.cpp
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
#include "Video.h"//Inlcude Video.h file
void Video::CreatePlaylist(Video playlist[1000]){
ifstream myfile;
int row = 0;
myfile.open("/Users/Auditore/Desktop/Netflix_Shows.csv");
while(!myfile.eof()){
for(row; row < 1000; row++){
getline(myfile, playlist[row].media1.title, ',');
getline(myfile, playlist[row].media1.rating, ',');
getline(myfile, playlist[row].media1.rating_lv, ',');
getline(myfile, playlist[row].media1.description, ',');
getline(myfile, playlist[row].media1.release_year, ',');
getline(myfile, playlist[row].media1.user_rate, ',');
getline(myfile, playlist[row].media1.user_rate_size, '\n');
}
}
}
Это код в Video.h
#ifndef Video_h
#define Video_h
#include <fstream>
using namespace std;
struct MediaInfo{
string title;
string rating;
string description;
string rating_lv;
string release_year;
string user_rate;
string user_rate_size;
};
class Video {//Video class
private:
ifstream myfile;
public:
std::string playlistname = "My Bored Playlist";//Set playlistname to Boring Playlist
MediaInfo media1;
void CreatePlaylist(Video playlist[1000]);
};
#endif