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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 107, средняя оценка - 5.00
bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
#1

cin чтение из файла C++ - C++

10.10.2010, 00:03. Просмотров 13786. Ответов 19
Метки нет (Все метки)

Здравствуйте,который день ищу не могу понять как читать из файла с помошью cin
Допустим есть 2 файла input.txt и output.txt.В файле input.txt лежат 2 числа разделённых пробелом например 6 и 3,как с помошью cin прочитать их и каждое число присвоить переменной например a и b, а потом записать в output.txt.
Интересует именно cin!!!Никаких fopen,scanf и ifstream !!! Ах да, язык c++
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2010, 00:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос cin чтение из файла C++ (C++):

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync - C++
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная "защита от дурака" на ввод. Не пойму предназначение cin.get() !=...

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear() - C++
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до этого c++ не изучал, поэтому возникали некоторые проблемы....

Cin, чтение с конца полученного потока - C++
Происходит ввод с клавиатуры последовательности чисел разделенных пробелами, нужно извлечь из этого потока последнее значение. Как?

Чтение последовательности чисел из cin в массив - C++
Добрый вечер. Есть код: vector<unsigned int> block; while (!bGood) { counter=0; cout<<"\r\nEnter ciphertext: "; ...

Чтение символов из cin в буфер в цикле - C++
Привет! Нужно считать строки из консоли, но что-то идёт не так. while (true) { Strings.push_back(yury::BasicString()); ...

cin из файла - как? - C++
именно CIN! Никаких там fstream'ов и fopen... То есть как сделать так, чтобы программа работала: cin >> i >> j; cout << i << "...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
10.10.2010, 00:09 #2
cin-ом никак не сможете считать
C++
1
2
3
4
5
6
ifstream file("input.txt");
file>>a>>b;
file.close();
ofstream file("output.txt");
file<<a<<b;
file.close();
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
10.10.2010, 00:13 #3
-comrade-, Ошибаетесь товарисч. Сначала читает cin-ом из файла. Потом возвращаем стандартный cin и читаем с клавиатуры.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <fstream>
#include <string>
#include <iostream>
 
int main()
{
    std::streambuf* backup;
    std::string Str;
    backup=std::cin.rdbuf();
    std::ifstream ifs("Test.txt");
    std::cin.rdbuf(ifs.rdbuf());
    std::getline(std::cin, Str);
    std::cout<<Str<<'\n';
    std::cin.rdbuf(backup);
    std::cin>>Str;
    std::cout<<Str<<'\n';
    return 0;
}
Конкретно по данному.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <fstream>
 
int main()
{
     std::ifstream ifs("input.txt");
     std::cin.rdbuf(ifs.rdbuf());
     int a, b;
     std::cin>>a>>b;
     ifs.close();
     std::ofstream ofs("output.txt");
     std::cout.rdbuf(ofs.rdbuf());
     std::cout<<a<<' '<<b;
     ofs.close();
     return 0;
}
1
bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 00:18  [ТС] #4
Цитата Сообщение от -comrade- Посмотреть сообщение
ifstream file("input.txt"); file>>a>>b; file.close(); ofstream file("output.txt"); file<<a<<b; file.close();
не работает у вас по-моему переприсвоение переменных тоесть вы сначала присваеваете a потом b и потом снова a и в output.txt ничего не сохраняется из за этого,еще может быть потому что у меня там цифры разеделены пробелом короче не работает



Цитата Сообщение от -comrade- Посмотреть сообщение
cin-ом никак не сможете считать
я думаю ,что можно давно просто делал

Добавлено через 2 минуты
Цитата Сообщение от Lavroff Посмотреть сообщение
#include <fstream> #include <string> #include <iostream> int main() { std::streambuf* backup; std::string Str; backup=std::cin.rdbuf(); std::ifstream ifs("Test.txt"); std::cin.rdbuf(ifs.rdbuf()); std::getline(std::cin, Str); std::cout<<Str<<'\n'; std::cin.rdbuf(backup); std::cin>>Str; std::cout<<Str<<'\n'; return 0; }
не совсем понял т.к. намудренно программа должна всего лишь с помощью cin считать 2 числа из файла разделённых пробелом и присвоить их 2 переменным а потом записать в файл output.txt ,думаю можно как то попроще?

Добавлено через 56 секунд
Цитата Сообщение от Lavroff Посмотреть сообщение
и читаем с клавиатуры.
читать с клавы там не надо)
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
10.10.2010, 00:20 #5
bol2909, Гм. Ну rdbuf просто поток переводит на файл. Можно через freopen. Но это как бэ Си.
1
bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 00:21  [ТС] #6
Цитата Сообщение от Lavroff Посмотреть сообщение
#include <iostream> #include <fstream> int main() { std::ifstream ifs("input.txt"); std::cin.rdbuf(ifs.rdbuf()); int a, b; std::cin>>a>>b; ifs.close(); std::ofstream ofs("output.txt"); std::cout.rdbuf(ofs.rdbuf()); std::cout<<a<<' '<<b; return 0; }
спасибо попробую

Добавлено через 37 секунд
rdbuf не очень понял можете объяснить что это такое по конкретнее)
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
10.10.2010, 00:22 #7
bol2909, rdbuf
1
bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 00:23  [ТС] #8
а на русском есть?)
кстати я попробовал работает спасибо
0
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
10.10.2010, 00:27 #9
bol2909, вот ваша задача:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <fstream>
 
using namespace std; 
 
int main()
{
    int a,b;
    ifstream file1("d:\\input.txt");
    file1>>a>>b;
    file1.close();
    ofstream file2("d:\\output.txt");
    file2<<a<<" "<<b;
    file2.close();
    return 1;
}
1
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
10.10.2010, 00:29 #10
bol2909, На русском нормальной инфы нету. Вообщем, если вкратце и если я правильно понял, то rdbuf связывает поток с тем, что указано в параметрах. Допустим тут:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <fstream>
 
int main()
{
     std::ifstream ifs("input.txt");//Файл
     std::cin.rdbuf(ifs.rdbuf());//Перенаправили стандартный ввод на ввод из файла
     int a, b;
     std::cin>>a>>b;//Считали из файла значения, положили в две переменные
     ifs.close();
     std::ofstream ofs("output.txt");//Открыли второй файл
     std::cout.rdbuf(ofs.rdbuf());//Перенаправили стандартный вывод на вывод в файл
     std::cout<<a<<' '<<b;//Вывели
     ofs.close();
     return 0;
}
Добавлено через 53 секунды
-comrade-, Вам как бэ не намекает?

Цитата Сообщение от bol2909 Посмотреть сообщение
Интересует именно cin!!!Никаких fopen,scanf и ifstream !!!
1
bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 00:31  [ТС] #11
Цитата Сообщение от -comrade- Посмотреть сообщение
#include <fstream> using namespace std; int main() { int a,b; ifstream file1("d:\\input.txt"); file1>>a>>b; file1.close(); ofstream file2("d:\\output.txt"); file2<<a<<" "<<b; file2.close(); return 1; }
это более понятно спасибо))

Добавлено через 1 минуту
Цитата Сообщение от Lavroff Посмотреть сообщение
-comrade-, Вам как бэ не намекает?
Цитата Сообщение от bol2909 Посмотреть сообщение
Интересует именно cin!!!Никаких fopen,scanf и ifstream !!!
да ладно просто,хотелось именно cin, но если легче с другими то можно и с ними всем спасибо)))
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
10.10.2010, 07:27 #12
Для разнообразия:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string>
 
int main()
{
    std::string str;
    std::cin >> str;
    
    std::cout << "Следующая строка прочитана из файла: " << str << std::endl;
}
Лог консоли:
Код
./a.out < file.txt
Следующая строка прочитана из файла: читаемая_строка_из_файла
1
bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 12:02  [ТС] #13
./a.out < file.txt дак у меня вроде не linux,я на visual studio 2010 работаю

Добавлено через 34 секунды
Цитата Сообщение от fasked Посмотреть сообщение
./a.out < file.txt
Дак у меня вроде не llinux я на visual studio работаю)
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
10.10.2010, 12:23 #14
Цитата Сообщение от bol2909 Посмотреть сообщение
Дак у меня вроде не llinux я на visual studio работаю
из командной строки можно абсолютно так же запускать и *.exe файлы, если я не ошибаюсь.
Код
myprogramm.exe < file.txt
1
bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 12:27  [ТС] #15
а понял то есть мне надо при включении программы самому прописать путь к файлу да?
если так то не очень подходит нужно чтобы в коде уже был записан путь
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2010, 12:27
Привет! Вот еще темы с ответами:

Метод getline(cin, m) не срабатывает без cin.ignore() / Ревью кода - C++
Почему в моем случае getline(cin, m) не срабатывает без cin.ignore() ? Если по коду есть какие-нибудь замечания, то просьба написать что не...

Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами - C++
Нужна помощь. Задача продемонстрировать различие между вводом с помощью cin.get и cin.getline с тремя параметрами, как из потока достать...

Для чего в код вводится cin.ignore после того, как cin>> уже сработало? - C++
Доброго времени суток! Просматриваю простой код. Вводится строка типа string: фунты и дюймы Затем значения переводится в типы int и...

Переделать в коде чтение из файла в чтение с клавиатуры - C++
Переделайте что бы текст считывался с клавиатуры, а не с файла! Буду благодарен за помощь! //файл должен начинаться со слова, между...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.10.2010, 12:27
Ответ Создать тему
Опции темы

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