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

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

Войти
Регистрация
Восстановить пароль
 
Vepsar
32 / 32 / 6
Регистрация: 11.08.2011
Сообщений: 158
#1

Создание файла с текстом - C++

29.06.2012, 22:52. Просмотров 671. Ответов 11
Метки нет (Все метки)

Уважаемые форумчене, помогите разобраться с небольшой,
но достаточно парадоксальной проблемой!
Моя задача состоит в том, чтобы создать файл с вводимым
вручную названием и текстом, далее сохранить и закрыть его.
Вот код того что у меня получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   char a[100];
           char g[100];
    cout<<"Vvedite nazvanie:";
    cin.get(a,100);
    ofstream l;
    l.open(a);
           cout<<"Vvedite tekst:";
           cin.get(g,100);
    //gets(g);
    l<<g;
    l.close();
    system("pause");
    system("cls");
    return 0;
При выполнении программы проскакивает действие ввода самого текста,
но в теле программы оно присутствует...
Парадокс в том, что ввод текста и названия файла абсолютно идентичны!!!
Извеняюсь за столь глупый вопрос, только начал знакомится с С++.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2012, 22:52     Создание файла с текстом
Посмотрите здесь:

С++ работа с текстом из файла - C++
Народ помогите плиз !!! Надо прочитать текст из файла , для дальнейшей работы с ним (текстом) , т.е. надо записать весь текст в массив , у...

Размер файла с текстом - C++
Решаю сложную задачу. Появился такой вопрос с которым надо бы определится.. 1) Сколько места на диске займет файл (.txt) заполненный...

Подключение файла с текстом и его инвертирование - C++
в общем задание такое: Нужно создать документ .txt и в каждом его ряде изменить порядок строк на противоположный.. помогите это...

Из файла с текстом вывести в начале предложения, состоящие из однобуквенных слов - C++
Не получается создать условие проверки предложений

Создание файла .h и файла .cpp - C++
Написать программу, которая состоит из следующих действий: 1. Создание заголовочного файла (с расширением .h). В файле описывается: *-...

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

создание H-файла - C++
ктонить подскажить как создать этот файл или как настроить 3.1 borland c чето я высадился не помню...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
29.06.2012, 23:04     Создание файла с текстом #2
замени
C++
1
cin.get(a,100);
на
C++
1
cin.getline(a,100);
Vepsar
32 / 32 / 6
Регистрация: 11.08.2011
Сообщений: 158
29.06.2012, 23:10  [ТС]     Создание файла с текстом #3
А можете мне noob.у объяснить почему и в чем была моя ошибка?
programm1r
46 / 45 / 1
Регистрация: 19.06.2012
Сообщений: 134
29.06.2012, 23:14     Создание файла с текстом #4
функция get() читает из потока один символ, так что если вы ввели несколько символов, то она оставит за собой непустой поток. И следующий вызов cin.get() будет обречен на "фиаско"...
Vepsar
32 / 32 / 6
Регистрация: 11.08.2011
Сообщений: 158
29.06.2012, 23:18  [ТС]     Создание файла с текстом #5
Мммм спасибо) чучка понял !

Добавлено через 1 минуту
тоесть get() лучше никогда не использовать!?!?!
programm1r
46 / 45 / 1
Регистрация: 19.06.2012
Сообщений: 134
29.06.2012, 23:20     Создание файла с текстом #6
Например, если вы хотите спросить у пользователя Да/Нет: введите Y/N, то можно...
Vepsar
32 / 32 / 6
Регистрация: 11.08.2011
Сообщений: 158
29.06.2012, 23:27  [ТС]     Создание файла с текстом #7
Да, я разобрался Спасибо!
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.06.2012, 05:39     Создание файла с текстом #8
Цитата Сообщение от programm1r Посмотреть сообщение
функция get() читает из потока один символ, так что если вы ввели несколько символов, то она оставит за собой непустой поток. И следующий вызов cin.get() будет обречен на "фиаско"...
Не совсем так. Есть два варианта метода get(): get(char&) и get(char&, int). В данном коде используется get(char&, int). Он читает из потока последовательность символов, а не один символ. В данном коде ошибка происходит из-за того, что get(char&, int), когда прочитывает символ новой строки, то оставляет его в потоке ( в отличие от getline(char&, int)), делая первым символом для следующей операции чтения. При следующем чтении, встретив первым символ новой строки, метод get(char&, int) устанавливает флаг failbit (флаг ошибки, реакция на пустую строку), делая дальнейший ввод невозможным (то же самое произойдёт, если просто ввести пустую строку). Чтобы этого избежать, нужно, после вызова get(char&, int), извлечь символ новой строки, оставленный в потоке. Например, с помощью метода get():
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char a[100];
           char g[100];
    cout<<"Vvedite nazvanie:";
    cin.get(a,100);
    cin.get(); //извлекаем один символ(символ новой строки) из потока.
    ofstream l;
    l.open(a);
    cout<<"Vvedite tekst:";
    cin.get(g,100);
    
    l<<g;
    l.close();
    
    system("pause");
    system("cls");
    return 0;
dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
30.06.2012, 10:18     Создание файла с текстом #9
Цитата Сообщение от alsav22 Посмотреть сообщение
get(char&, int)
ну вообщето не get(char&, int) а get(char*, streamsize), есть еще и другие перегрузки, подробнее тут, http://www.cplusplus.com/reference/i...m/istream/get/
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.06.2012, 14:48     Создание файла с текстом #10
Цитата Сообщение от aram_gyumri Посмотреть сообщение
ну вообщето не get(char&, int) а get(char*, streamsize), есть еще и другие перегрузки
Согласен. Упростил. Но, на вопрос о причине сбоя, я, вроде-бы, правильно ответил?
dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
30.06.2012, 17:12     Создание файла с текстом #11
да ответил правильно, но как по мне лучше для чтения строк использовать getline, поскольку он именно для таких целей
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2012, 20:09     Создание файла с текстом
Еще ссылки по теме:

создание файла - C++
ребят не подскажите как создать(к примеру 50 файлов) и записать че-то в него. С созданием одного файла непроблема, а как сделать чтобы...

Создание файла - C++
Я гляжу тут все интузиасты! Тогда такой вопрос: работал в техноре с С++ но не когда не доводилось работать с файлами! Но в данный...

Создание файла - C++
Подскажите пожалуйста, как в данной ситуации можно/нужно создать корректно файл. В книге написано про ошибку, якобы 4й бит сигнализирует...

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

Создание log файла - C++
Доброго времени суток. Я написал класс, при вызове определённых функций которого, требуется вывести значения его полей в log, для...


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

Или воспользуйтесь поиском по форуму:
Vepsar
32 / 32 / 6
Регистрация: 11.08.2011
Сообщений: 158
30.06.2012, 20:09  [ТС]     Создание файла с текстом #12
Hey guys!!! ТЕМА ЗАКРЫТА
Yandex
Объявления
30.06.2012, 20:09     Создание файла с текстом
Ответ Создать тему
Опции темы

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