Чтение смеси строк, целых и двойных чисел из файла в C ++ - PullRequest
0 голосов
/ 09 октября 2011

У меня есть файл .txt, который выглядит примерно так:

1
Some string
Some other string
3
10,5
20
20

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

РЕДАКТИРОВАТЬ: Под "сбой" я имею в виду, что появляется сообщение "Не отвечает".и код, который я использую в основном:

ifstream file;
file.open ("C:\path\file.txt");
file >> int1;

getline(file, string1);
getline(file, string2);
file >> int2;
file >> double1;
file >> double2;
file >> double3;
// ....

file.close();

РЕДАКТИРОВАТЬ 2: Почему-то вместо 1 значение int1 -858993460.

Я действительно запутался ...

РЕДАКТИРОВАТЬ 3: Теперь все вейлы устанавливаются, но они не являются значениями, записанными в файле.Первые int и first srting хороши, но вторая строка имеет красный цвет как 0, а двойные все имеют красный цвет как

-92559631349317830000000000000000000000000000000000000000000000

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

Ответы [ 2 ]

1 голос
/ 10 октября 2011

file.open ("C: \ path \ file.txt");

\ - управляющий символ

fix

file.open ("C: \\ path \\ file.txt");

0 голосов
/ 09 октября 2011

Если эти типы повторяются одинаково, я предлагаю:

ifstream str("MyFile.dat");
int counter = 0;
const int MAX_DATA_CNT = 4;
const int DOUBLE = 1;
const int INT = 2;
....

while (!str)
{
  if (++counter == MAX_DATA_CNT)
      counter = 1;
  switch(counter)
  {
    case DOUBLE: // input double
       break;
    case INT: // input int
        break;
    ....
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...