На этом сайте есть много вариантов этого вопроса, но все ответы предполагают, что пользователь имеет хорошие фундаментальные знания о том, как работает C++. Мне как новичку это не подходит.
У меня есть очень простая подпрограмма, пытающаяся распечатать один элемент из файла csv.
void parseCSV()
{
int line = 0;
ofstream myFile("C:/Users/joe-p/Documents/Book1.csv");
getline(myFile, line, ',');
}
«Getline» помечен ошибкой: «Ни один экземпляр когда-либо загруженной функции «Getline» не соответствует списку аргументов»
Это очень расстраивает, так как я знаю, что ответ содержится в нескольких ответах, которые я уже читал, но копирование кода примера и просто попытка вызвать себя просто не работает для меня.
std::getline работает не так.
Вам нужно читать как строки, а затем преобразовывать строки в целые числа.
ofstream myFile("C:/Users/joe-p/Documents/Book1.csv");
— это выходной поток, для вызова getline
нужно использовать и входной поток.
Проблема:
std::getline
первый аргумент должен быть входным потоком. std::ofstream
— выходной поток.std::getline
принимает std::string&
в качестве второго параметра, а не int
.Решение:
Вероятно, вам следует открыть файл как std::ifstream
и использовать либо std::ifstream::operator>>
, либо std::getline
, чтобы заполнить std::string
, а затем разобрать его на int
.
Дополнительная информация:
using namespace std;
считается плохой практикой (подробнее здесь).Полный код:
void parseCSV()
{
std::string line;
ifstream myFile("C:/Users/joe-p/Documents/Book1.csv");
getline(myFile, line, ',');
int num = std::stoi(line);
std::cout << num << "\n";
}
Очень полезная информация, спасибо! хотя этот фрагмент кода сам по себе не печатает никаких данных, и я не могу понять, что мне нужно изменить, чтобы это произошло. Какие изменения мне нужно внести в него, чтобы напечатать элемент в строке 1, столбце 1? Если я получу пример этого, я смогу понять, как манипулировать им оттуда.