Два идентичных сегмента кода, разные результаты - PullRequest
0 голосов
/ 30 сентября 2011

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

Он отлично работает в этом быстром тесте, который я сделал после того, как у меня возникли проблемыи выводит количество записей в текстовом файле.

#include <iostream>
using std::cout;
using std::cin;

#include <cstdio>

int main()
    {
    int a;
    int b = 0;
    freopen ("7.txt", "r", stdin);

    while (cin >> a)
        ++b;

    cin.clear();

    fclose (stdin);
    freopen ("7.txt", "r", stdin);

    cout << b << '\n';

    fclose (stdin);
}

РЕДАКТИРОВАТЬ: Wow я сожалею всех, кто пытался обернуть голову вокруг этого.Было довольно поздно, когда я опубликовал это, но я думал, что я закончил.Очевидно нет.Теперь, когда я снова открываю свой файл, чтобы разместить в нем код, я понимаю, что раньше все перемещал в папку, но, очевидно, когда я пытался запустить реальную вещь, он сохранял ее вне папки, поэтому он не мог открыться »7.текст".

Проблема решена. Думаю, грустная трата пространства из-за того, что она даже не была завершена. О_о, извините.

EDIT2: Хорошо, теперь я в замешательстве.У меня была временная учетная запись на этом компьютере, но когда я вошел в эту учетную запись, чтобы задать другой вопрос, появился тот, который я намеревался опубликовать накануне вечером.Я даже не был на этом компьютере, когда спрашивал об этом.Не уверен, почему это не было опубликовано так, если все было готово к тому, чтобы быть.

Ответы [ 2 ]

3 голосов
/ 30 сентября 2011

Моя лучшая догадка - вы пытаетесь перечитать один и тот же файл. Если это так, то вы можете попробовать это:

std::ifstream file("7.txt");
std::string line = "";
while(std::getline(file, line))
{
  //do something
}
//reset file pointer
file.clear();
file.seekg (0, std::ios::beg);
//re-read file
while(std::getline(file, line))
{
  //do something else
}   

Пожалуйста, попробуйте сформулировать лучшие вопросы в будущем.

0 голосов
/ 30 сентября 2011

Я понятия не имею, что вы пытаетесь сделать, но любое взаимодействие между freopen, fclose и cin является реализацией, определенной в лучшем случае (и, скорее всего, неопределенным поведением).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...