c++ ошибка getline(), ни один экземпляр функции перегрузки getline не соответствует списку аргументов

Я получаю следующую ошибку при использовании функции getline():

ни один экземпляр функции перегрузки "getline" не соответствует списку аргументов

В одном классе с именем «Время» я использую его при чтении следующего ввода:

istream & operator >> (istream & input, Time & C) /// An input stream for the hour     minutes and seconds
{
char ch;
input >> C.hour >> ch >> C.minute >> ch >> C.second;
getline(input,C.ampm,',');

return input;   /// Returning the input value
}

Это отлично работает, но я также хочу использовать его для другого класса под названием «Акции»:

istream & operator >> (istream & input, Shares & C) /// An input stream for the day, month and year
{
char ch;
input >> C.price >> ch >> C.volume >> ch >> C.value >> ch;
getline(input,C.value,',');

return input;   /// Returning the input value
}

Однако функция getline в классе «акции» выдает мне ошибку. Оба класса используют библиотеки:

#include <iostream>
#include <string>

Как я могу преодолеть это? Спасибо


person user2924752    schedule 19.04.2014    source источник


Ответы (1)


getline (вход, C.value, ', ');

судя по комментариям, вы написали, что C.value двойное. Это не сработает, потому что, как указывали другие, ожидаемый параметр имеет тип string там.

Вам нужно будет прочитать временную строку, а затем преобразовать ее в свою двойную. Последний шаг прост, но еще проще с std::stod C++11. .

Следовательно, вы бы написали что-то вроде этого:

std::string valueString;
getline(input, valueString, ',');
C.value = std::stod(valueString);
person lpapp    schedule 19.04.2014