void read_character(ifstream &a)
{
char t;
a >> t;
if (t == '+')
{
string temp;
getline(a, temp);
character_name = temp;
a >> number;
spetifications = new string[number];
spetifications_value = new int[number];
for (int i = 0; i < number; i++)
{
a >> spetifications[i];
}
for (int i = 0; i < number; i++)
{
a >> spetifications_value[i];
}
a >> t;
if (t != '+') { throw; }
}
else
{
throw;
}
}
int main()
{
ifstream k("output.txt");
b.read_character(k);
}
Суть проблемы в следующем, я хочу считать объект b с текстового файла, для удобства блок этого объекта выделен плюсами. Исключений не вызывает, даже последний плюс считывается полноценно, но все, что после getline() считывается неправильно с левыми значениями, да и другие объекты впоследствии выбрасывают исключения при считывании. Сам текстовый файл:
+
void
2
first_spetification
second_spetification
45
100
+
Если у вас все строковые значения из одного слова - замените
getline(a, temp);
на
a >> temp;
и живите спокойно. Если нет - то
a >> spetifications[i];
замените тоже на
getline(a,spetifications[i]);
но перед каждым getline
, включая первый, сбрасывайте буфер потока
a.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно преобразовать массив по формуле b(i) = (a(i) - a(i-1))/i В теории, мой код должен работаь, но что то не так
В двухбайтной ячейке памяти записана последовательность нулей и единицС помощью битовых операций переставьте биты так чтобы сначала шли...
Хочу создать квадратную матрицу с помощью stl и чтобы пользователь сам заполнял массивПока код такой: