Member 13669380 Ответов: 1

Чтение csv-файла с использованием структур векторов


Я должен прочитать csv-файл в мои структуры и векторы и отсортировать его по столбцам...от тепла, расстояния и времени.
Проблема с моим кодом заключается в том, что после запуска мой вектор остается пустым, и если я не знаю, как вычислить данные после сортировки

Что я уже пробовал:

#include <fstream>
#include <iostream>
#include <string>
#include <sstream> //stringstream
#include <vector>
#include <algorithm> //for sort()
using namespace std;

struct Details{
	string name;
	string dob;
	int heatNo;
	int distance;
	double time;
	string status;
};
bool multipleFields(const Details &lhs, const Details &rhs)
{
	if (lhs.heatNo < rhs.heatNo)
		return true;
	else if (lhs.distance < rhs.distance)
		return true;
	else if (lhs.time < rhs.time)
		return true;
}
int main()
{
	vector <details> results;
	ifstream inputFile ("C:\\Users\\mitch\\Desktop\\Data Structures\\projectInput.csv");
	Details swimmer;
	string line;
	
	while (!inputFile.eof() && getline(inputFile, line, '|'))
	{
		cout << line << "\t";
		stringstream ss(line);
		Details swimmer;
		for (int i = 0; i < 1e4; i++)
		{
			if (ss >> swimmer.name >> swimmer.dob >> swimmer.heatNo >> swimmer.distance >> swimmer.time >> swimmer.status)
			{
				results.push_back(swimmer);
			}
		}
	}
	inputFile.close();  //closes the file 
	cout << results.size();
	sort(results.begin(), results.end(), multipleFields); 
	system("pause");
	return 0;
}

1 Ответов

Рейтинг:
0

CPallini

Цитата:
вектор
результаты;
Приведенная выше строка должна препятствовать правильной компиляции вашего кода.

Если ваш vector пусто после выполнения команды while петля потом что-то пошло не так либо в while управляющее выражение или в (всех) вызовах оператора извлечения stringstream (почему так много вызовов?). Вы можете либо отлаживать, либо регистрировать то, что происходит.


Member 13669380

Мне нужны вызовы для вывода всех данных. Я думаю, что это струнный поток создает мне проблемы. Как я могу удалить его и поставить на место петлю for? Я пробовал разные способы, но я получаю ошибки в VS