функция типа fscanf для потоков? - PullRequest
1 голос
/ 08 февраля 2012

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

fscanf(file, %d %s, int1, str1);

Как вы можете видеть, сравнительно легко прочитать файл, вставьте первый int, с которым вы столкнетесь, в один контейнер, а затем первую строку в символ *. Я хочу сделать это с помощью fstreams, используя функции потоков. Это то, что я придумал, с моим ограниченным знанием потока.

while((fGet = File.get() != EOF))
{
    int x;
    int y;
    bool oscillate = false;
    switch(oscillate)
    {
    case false:
        {
            x = fGet;
            oscillate = true;
            break;
        }
    case true:
        {
            y = fGet;
            oscillate = false;
            break;
        }
    }
}

В основном я хочу просмотреть файл и поместить первое целое число в x, а второе в y.

Это довольно плохо по нескольким причинам, как вы можете сказать, и я бы никогда этим не воспользовался, но это все, что я могу придумать. Есть ли лучший способ сделать это?

1 Ответ

5 голосов
/ 08 февраля 2012

Чтобы прочитать два целых числа из потока, все, что вам нужно сделать, это

int x, y;
File >> x >> y;

И эквивалент

fscanf(file, "%d %s", &int1, str1);

Есть

int x;
string s;

file >> x >> s;

И убедитесь, что, если вы хотите проверить, работает ли чтение, поместите чтение в условие:

if (file >> x >> s)

или

while (file >> x >> y)

или что угодно.

...