я не признал - PullRequest
       24

я не признал

0 голосов
/ 30 января 2012

Я работаю над программой Windows VC ++ 2008, которая выполняет fileIO, и столкнулась с проблемой, которая действительно странная. в моих директивах #include у меня есть

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>

и затем у меня есть метод, который фактически выполняет fileIO, но когда я пытаюсь открыть файл следующим образом:

std::ofstream Output;
Output.open("Output/log.txt", ios::out);

мой intelisense позволяет это, и даже имеет правильное автоматическое завершение, но мой компилятор выдает ошибку:

1>c:...\engine\gsp420maincore\gsp420maincore\messagequeue.cpp(141) : error C2653: 'ios' : is not a class or namespace name
1>c:...\engine\gsp420maincore\gsp420maincore\messagequeue.cpp(141) : error C2065: 'out' : undeclared identifier

когда я читал о ofstream.open (), он заявил, что должен быть указан файл, который нужно открыть, для ввода, вывода или для обоих, но ios должен автоматически включаться любой другой директивой iostream #include, и это проблема не исправлена, когда я вставляю:

#include <ios> // directive

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

Ответы [ 2 ]

4 голосов
/ 30 января 2012

Похоже, вы забыли добавить префикс к std:: и не использовали using namespace std; (судя по тому, что вы явно указали пространство имен для std::ofstream).

Попробуйте изменить его на std::ios::out.

Вам не нужно #include <ios> вручную.

2 голосов
/ 30 января 2012

Как уже отмечалось, вам нужно std::ios::out - только вам это совсем не нужно. Когда вы открываете ofstream, он открывается для вывода по умолчанию (аналогично, ifstream открывается для ввода по умолчанию). Я бы также посоветовал инициализировать объект при создании, а не создавать неинициализированный поток, а затем открывать его отдельно. Принимая это во внимание, вы получаете немного более простой код:

std::ofstream Output("output/log.txt");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...