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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 307, средняя оценка - 4.94
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
#1

fstream удалить/создать файл - C++

22.03.2011, 12:49. Просмотров 39984. Ответов 22
Метки нет (Все метки)

Подскажите как с помощью библиотека fstream можно создать/удалить файл ?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LaГushan
124 / 124 / 14
Регистрация: 12.03.2011
Сообщений: 227
22.03.2011, 16:20     fstream удалить/создать файл #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
ofstream ofs("test.txt"); //создать
ofs.close();
 
std::remove("test.txt"); //удалить
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
22.03.2011, 17:57  [ТС]     fstream удалить/создать файл #3
ОГРОМНОЕ СПС!

Добавлено через 34 минуты
Еще такой вопрос возник.
Нужно что бы не в файл с запускаемым файлом создался документ, а например в /home/user/.files/.
Не подскажите, как это можно реализовать ,

Добавлено через 28 минут
И еще один вопрос.
Как можно реализовать что то на подобии этого( в моем примере компилятор выдает ошибки).

*char * na = "test/" + this->nick + ".txt";
std::ofstream ofs(na);
ofs.close();
easybudda
Эксперт С++
9441 / 5464 / 926
Регистрация: 25.07.2009
Сообщений: 10,485
22.03.2011, 18:21     fstream удалить/создать файл #4
Цитата Сообщение от koka3000 Посмотреть сообщение
Нужно что бы не в файл с запускаемым файлом создался документ, а например в /home/user/.files/.
Выполните эту программу
C
1
2
3
4
5
6
7
#include <stdio.h>
 
int main(int argc, char ** argv, char ** envp){
    while ( *envp )
        printf("%s\n", *envp++);
    return 0;
}
обратите внимание на строчку, начинающуюся с HOME, ну а дальше что-нибудь придумаете
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
22.03.2011, 18:37  [ТС]     fstream удалить/создать файл #5
Дело не в том что я не знаю какой юзер будет использовать ( прогу буду использовать только я, и я знаю свой ник))
1. Я не знаю как закинуть именно в определенную папку, а не в папку с прогой.
C++
1
std::ofstream f("/home/user/papka/test.txt");
при таком написании компилятор не выдает ошибок, но файл в папке тоже не создается.(
создается только так:
C++
1
std::ofstream f("test.txt");
но тогда он будет в папке с прогой(
2. Предположим что мой файл не всегда будет называться test.txt, а его имя будет храниться в переменной name. Вот как я пытался это сделать:
C++
1
2
char * name = "namefile";
std::ofstream f(name);
НО КОМПИЛЯТОР ВЫДАЕТ ОШИБКИ!
asics
Freelance
Эксперт C++
2844 / 1781 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
22.03.2011, 18:51     fstream удалить/создать файл #6
Цитата Сообщение от koka3000 Посмотреть сообщение
1. Я не знаю как закинуть именно в определенную папку, а не в папку с прогой.
C++
1
std::ofstream ofs("D://inc/test.txt");//Файл создасться в локальном диск D, папке inc
Добавлено через 1 минуту
Цитата Сообщение от koka3000 Посмотреть сообщение
НО КОМПИЛЯТОР ВЫДАЕТ ОШИБКИ!
Хм, у меня все нормально компилируеться.
easybudda
Эксперт С++
9441 / 5464 / 926
Регистрация: 25.07.2009
Сообщений: 10,485
22.03.2011, 18:53     fstream удалить/создать файл #7
Цитата Сообщение от koka3000 Посмотреть сообщение
Я не знаю как закинуть именно в определенную папку
да ну?!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <fstream>
 
int main()
{
    const char * name1 = "/home/andrew/file1.txt";
    std::ofstream ofs1(name1);
    if ( ! ofs1.is_open() ){
        std::cerr << "Can't open first file!" << std::endl;
        return 1;
    }
    ofs1 << "File #1" << std::endl;
    ofs1.close();
    std::ofstream ofs2("/home/andrew/file2.txt");
    if ( ! ofs2.is_open() ){
        std::cerr << "Can't open second file!" << std::endl;
        return 1;
    }
    ofs2 << "File #2" << std::endl;
    ofs2.close();
    return 0;
}
fstream удалить/создать файл
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
22.03.2011, 19:19  [ТС]     fstream удалить/создать файл #8
Ок. А как быть с этим?
Есть какая-то переменная nameplayer с типом string:
C++
1
2
const char * name1 = "/home/andrew/" + nameplayer + ".txt";
        std::ofstream ofs1(name1);
Выдает ошибки. Переменная nameplayer - имя игрока. Для каждого игрока есть свой файлик.
asics
Freelance
Эксперт C++
2844 / 1781 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
22.03.2011, 19:22     fstream удалить/создать файл #9
Цитата Сообщение от koka3000 Посмотреть сообщение
const char * name1 = "/home/andrew/" + nameplayer + ".txt";
Неальзя так делать, можно так разве-что так
C++
1
std::string name1 = "/home/andrew/" + nameplayer + ".txt"
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
22.03.2011, 19:33  [ТС]     fstream удалить/создать файл #10
std::string name1 = "/home/andrew/" + nameplayer + ".txt"
std::ofstream ofs1(name1);

выдает ошибки . (
easybudda
Эксперт С++
9441 / 5464 / 926
Регистрация: 25.07.2009
Сообщений: 10,485
22.03.2011, 19:35     fstream удалить/создать файл #11
Цитата Сообщение от asics Посмотреть сообщение
...можно так разве-что так
C++
1
std::string name1 = "/home/andrew/" + nameplayer + ".txt"
и сразу ответ на следующий вопрос
C++
1
std::ofstream ofs1(name1.c_str());
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
22.03.2011, 19:37  [ТС]     fstream удалить/создать файл #12
OMG, СПАСИБО ОГРОМНОЕ !!!
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
17.04.2011, 13:51  [ТС]     fstream удалить/создать файл #13
Извиняюсь, что поднимаю старую тему, не хочется из-за маленькой проблемы новую создавать.

C++
1
2
int test = 5;
std::string name1 = "/home/andrew/" + test + ".txt";
В Visual дает ошибку:
error C2110: +: невозможно добавить два указателя
asics
Freelance
Эксперт C++
2844 / 1781 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
17.04.2011, 14:26     fstream удалить/создать файл #14
koka3000, Переводите число в строку
C++
1
2
std::ostringstream ost;
ost << test;
и потом уже соеденяйте
C++
1
std::string name1 = "/home/andrew/" + ost.str() + ".txt";
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
17.04.2011, 18:00  [ТС]     fstream удалить/создать файл #15
Что-то мне ошибки разные выдает.
А можно как-то так сделать:
int i = 1;
std::string name = 1 + "";
Ну что бы содержимое int попало в string
diagon
Higher
1924 / 1190 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
17.04.2011, 18:32     fstream удалить/создать файл #16
Цитата Сообщение от easybudda Посмотреть сообщение
Выполните эту программу
C
1
2
3
4
5
6
7
#include <stdio.h>
 
int main(int argc, char ** argv, char ** envp){
    while ( *envp )
        printf("%s\n", *envp++);
    return 0;
}
обратите внимание на строчку, начинающуюся с HOME, ну а дальше что-нибудь придумаете
о_О
А можно обьяснить, как это работает?
Что это за волшебный указатель?
dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
17.04.2011, 19:03     fstream удалить/создать файл #17
asics, не std::ostringstream ost; а std::istringstream ost;
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
17.04.2011, 19:35     fstream удалить/создать файл #18
Цитата Сообщение от LaГushan Посмотреть сообщение
std::remove("test.txt"); //удалить
смешная шутка
asics
Freelance
Эксперт C++
2844 / 1781 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
17.04.2011, 19:46     fstream удалить/создать файл #19
Цитата Сообщение от aram_gyumri Посмотреть сообщение
asics, не std::ostringstream ost; а std::istringstream ost;
Что за бред ? std::istringstream вообщето превращает строку в поток, при чем здесь это ?

Добавлено через 2 минуты
Да и нет там (в std::istringstream) перегруженого оператора <<
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2011, 19:48     fstream удалить/создать файл
Еще ссылки по теме:

C++ Не перезаписывается файл. Работа с fstream
C++ Запись в файл fstream
C++ Если количество слов четное, то поменять местами i-ые и (i+1)-ые слова, иначе удалить среднее (fstream)
Можно ли с помощью fstream создать папку C++
Fstream не видит файл C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9441 / 5464 / 926
Регистрация: 25.07.2009
Сообщений: 10,485
17.04.2011, 19:48     fstream удалить/создать файл #20
diagon, оболочка передаёт запускаемой программе кроме аргументов, с которыми она (программа) была запущена, ещё и параметры окружения. char ** envp - указатель на массив строк с этими параметрами. Как и массив argv, envp заканчивается нулевым указателем.
Yandex
Объявления
17.04.2011, 19:48     fstream удалить/создать файл
Ответ Создать тему
Опции темы

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