Форум программистов, компьютерный форум CyberForum.ru

Вопрос по работе с файлами в Visual Studio - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
Gooman
10 / 10 / 0
Регистрация: 03.10.2010
Сообщений: 350
04.02.2012, 11:12     Вопрос по работе с файлами в Visual Studio #1
Написал программу для работы с файлом в Visual Studio. Iostream подключил.
Но такие вот привычные записи, как, например,
C++
1
 ifstream fin("c:\\projects\\text1.txt", ios::in | ios::nocreate);
visual studio использовать не хочет.
На
C++
1
fin.seekg(0, ios::end);
тоже рукается, типа fin должен быть классом.
Можете подсказать, что нужно исправить / подключить, чтоб visual мог работать с такими функциями?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2012, 11:12     Вопрос по работе с файлами в Visual Studio
Посмотрите здесь:

C++ Вопрос про Visual Studio 2008
C++ Вопрос по работе с файлами
C++ Маленький вопрос по работе с файлами
C++ Вопрос по Visual Studio 2008
C++ Работа с INI-файлами в Visual Studio 2010
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
04.02.2012, 11:18     Вопрос по работе с файлами в Visual Studio #2
1. подключить fstream
2/ Вы создаете текстовый или двоичный файл. Если двоичный, то надо писать еще ios::binary
Gooman
10 / 10 / 0
Регистрация: 03.10.2010
Сообщений: 350
04.02.2012, 11:23  [ТС]     Вопрос по работе с файлами в Visual Studio #3
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
1. подключить fstream
2/ Вы создаете текстовый или двоичный файл. Если двоичный, то надо писать еще ios::binary
Я использую текстовый файл.
Подключил fstream, часть ошибок исчезла, но они все равно есть.

Здесь
C++
1
ifstream fin("c:\\projects\\text1.txt", ios::in | ios::nocreate);
пишет, что "error C2039: nocreate: не является членом "std::basic_ios<_Elem,_Traits>" " и там же пишет, что "error C2065: nocreate: необъявленный идентификатор".

А на fin.close пишет ошибку "error C3867: std::basic_ifstream<_Elem,_Traits>::close: в вызове функции отсутствует список аргументов; используйте "&std::basic_ifstream<_Elem,_Traits>::close" для создания указателя на член".

Не подскажете, что нужно исправить?
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
04.02.2012, 11:29     Вопрос по работе с файлами в Visual Studio #4
1. Уберите nocreate
2. fin.close();

Кстати, можно писать вот так: c:/projects/file.txt - с нормальной косой, а не обратной.
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
04.02.2012, 13:15     Вопрос по работе с файлами в Visual Studio #5
Цитата Сообщение от Gooman Посмотреть сообщение
ios::nocreate
откуда вы это взяли? в стандартном ios_base нет такого мода
Gooman
10 / 10 / 0
Регистрация: 03.10.2010
Сообщений: 350
04.02.2012, 13:16  [ТС]     Вопрос по работе с файлами в Visual Studio #6
Цитата Сообщение от retmas Посмотреть сообщение
откуда вы это взяли? в стандартном ios_base нет такого мода
Из методички взял
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
04.02.2012, 13:19     Вопрос по работе с файлами в Visual Studio #7
не смотрите больше в эту методичку
и уберите ios::nocreate
Gooman
10 / 10 / 0
Регистрация: 03.10.2010
Сообщений: 350
04.02.2012, 13:20  [ТС]     Вопрос по работе с файлами в Visual Studio #8
Цитата Сообщение от retmas Посмотреть сообщение
не смотрите больше в эту методичку
и уберите ios::nocreate уже
Да мне как бы и не надо, она за прошлый семестр
Я уже давно убрал.
Том Ардер
Модератор
 Аватар для Том Ардер
3619 / 2238 / 271
Регистрация: 15.06.2009
Сообщений: 3,925
04.02.2012, 13:55     Вопрос по работе с файлами в Visual Studio #9
Цитата Сообщение от retmas Посмотреть сообщение
Цитата Сообщение от Gooman Посмотреть сообщение
ios::nocreate
откуда вы это взяли? в стандартном ios_base нет такого мода
Есть такое слово в этой букве

Используется для файлов вывода:

C++
1
2
// Убедиться, что файл уже существует
ofstream copy_file( "COPY", ios::nocreate );
или вариант:

C++
1
2
// убедиться, что файл ещё не существует
ofstream copy_file( "COPY", ios::noreplace );
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
04.02.2012, 14:06     Вопрос по работе с файлами в Visual Studio #10
Цитата Сообщение от Том Ардер Посмотреть сообщение
Есть такое слово в этой букве
Том Ардер, укажите пожалуйста, где в стандарте описан мод nocreate

Добавлено через 33 секунды
и noreplace заодно
Gooman
10 / 10 / 0
Регистрация: 03.10.2010
Сообщений: 350
04.02.2012, 14:11  [ТС]     Вопрос по работе с файлами в Visual Studio #11
Цитата Сообщение от retmas Посмотреть сообщение
Том Ардер, укажите пожалуйста, где в стандарте описан мод nocreate

Добавлено через 33 секунды
и noreplace заодно
Возможно, он описан с borland c++, т.к. методичка именно по нему.
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
04.02.2012, 14:14     Вопрос по работе с файлами в Visual Studio #12
это расширение борланда. не следует его использовать, тем более, что пользуетесь vs, в котором нет этого расширения
Том Ардер
Модератор
 Аватар для Том Ардер
3619 / 2238 / 271
Регистрация: 15.06.2009
Сообщений: 3,925
04.02.2012, 14:27     Вопрос по работе с файлами в Visual Studio #13
retmas, стандарта под рукой нет. Но есть Borland C++ 3.1 (1992 года) - там уже есть эти моды. Разворачивать древний Турбо С 2.0 и смотреть там нет желания.

Добавлено через 7 минут
ios::nocreate, ios::noreplace есть и в Visual Studio VС++, уже в 6.0, более ранних версий у меня нет
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
04.02.2012, 14:32     Вопрос по работе с файлами в Visual Studio #14
ну, если Borland C++ для вас стандарт - дело ваше. но не вводите в заблуждение других. если борланд вводит/вводил какие-то расширения, это не значит, что таков стандарт

Добавлено через 3 минуты
ISO/IEC 14882:2011
// 27.5.3.1.4 openmode
typedef T3 openmode;
static constexpr openmode app = unspecified ;
static constexpr openmode ate = unspecified ;
static constexpr openmode binary = unspecified ;
static constexpr openmode in = unspecified ;
static constexpr openmode out = unspecified ;
static constexpr openmode trunc = unspecified ;
и больше ничего. в предыдущем стандарте история с модами была такая же
Том Ардер
Модератор
 Аватар для Том Ардер
3619 / 2238 / 271
Регистрация: 15.06.2009
Сообщений: 3,925
04.02.2012, 14:57     Вопрос по работе с файлами в Visual Studio #15
retmas, Спасибо, я уже посмотрел в файлах - Вы совершенно правы, в стандарте этих мод нет.

В Борланде С++ они есть, в Вижуал Студии тоже (6.0), а в версии 2008 их переименовали: теперь это _Nocreate, _Noreplace
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2012, 18:22     Вопрос по работе с файлами в Visual Studio
Еще ссылки по теме:

C++ Работа с файлами (массив приведение типов) Visual studio
Работа с файлами в Visual studio 2005 C++
C++ Операции и функции в работе в классе с комплексными числами С++ Visual Studio

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
04.02.2012, 18:22     Вопрос по работе с файлами в Visual Studio #16
Цитата Сообщение от Gooman Посмотреть сообщение
Из методички взял
Это было в старой Студии 6 и вроде бы в Борландовских системах.
В стандарте этого нет.
Yandex
Объявления
04.02.2012, 18:22     Вопрос по работе с файлами в Visual Studio
Ответ Создать тему
Опции темы

Текущее время: 02:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru