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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 107, средняя оценка - 5.00
bol2909
 Аватар для bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 00:03     cin чтение из файла C++ #1
Здравствуйте,который день ищу не могу понять как читать из файла с помошью cin
Допустим есть 2 файла input.txt и output.txt.В файле input.txt лежат 2 числа разделённых пробелом например 6 и 3,как с помошью cin прочитать их и каждое число присвоить переменной например a и b, а потом записать в output.txt.
Интересует именно cin!!!Никаких fopen,scanf и ifstream !!! Ах да, язык c++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
10.10.2010, 00:09     cin чтение из файла C++ #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();
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
10.10.2010, 00:13     cin чтение из файла C++ #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;
}
bol2909
 Аватар для bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 00:18  [ТС]     cin чтение из файла C++ #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 Посмотреть сообщение
и читаем с клавиатуры.
читать с клавы там не надо)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
10.10.2010, 00:20     cin чтение из файла C++ #5
bol2909, Гм. Ну rdbuf просто поток переводит на файл. Можно через freopen. Но это как бэ Си.
bol2909
 Аватар для bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 00:21  [ТС]     cin чтение из файла C++ #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 не очень понял можете объяснить что это такое по конкретнее)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
10.10.2010, 00:22     cin чтение из файла C++ #7
bol2909, rdbuf
bol2909
 Аватар для bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 00:23  [ТС]     cin чтение из файла C++ #8
а на русском есть?)
кстати я попробовал работает спасибо
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
10.10.2010, 00:27     cin чтение из файла C++ #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;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
10.10.2010, 00:29     cin чтение из файла C++ #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 !!!
bol2909
 Аватар для bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 00:31  [ТС]     cin чтение из файла C++ #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, но если легче с другими то можно и с ними всем спасибо)))
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
10.10.2010, 07:27     cin чтение из файла C++ #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
Следующая строка прочитана из файла: читаемая_строка_из_файла
bol2909
 Аватар для bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 12:02  [ТС]     cin чтение из файла C++ #13
./a.out < file.txt дак у меня вроде не linux,я на visual studio 2010 работаю

Добавлено через 34 секунды
Цитата Сообщение от fasked Посмотреть сообщение
./a.out < file.txt
Дак у меня вроде не llinux я на visual studio работаю)
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
10.10.2010, 12:23     cin чтение из файла C++ #14
Цитата Сообщение от bol2909 Посмотреть сообщение
Дак у меня вроде не llinux я на visual studio работаю
из командной строки можно абсолютно так же запускать и *.exe файлы, если я не ошибаюсь.
Код
myprogramm.exe < file.txt
bol2909
 Аватар для bol2909
2 / 2 / 1
Регистрация: 29.08.2010
Сообщений: 51
10.10.2010, 12:27  [ТС]     cin чтение из файла C++ #15
а понял то есть мне надо при включении программы самому прописать путь к файлу да?
если так то не очень подходит нужно чтобы в коде уже был записан путь
xlxndr
 Аватар для xlxndr
56 / 8 / 3
Регистрация: 14.06.2013
Сообщений: 115
05.07.2013, 02:46     cin чтение из файла C++ #16
Читать из файла с помощью CIN конкретно можно так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
# include <iostream>
# include <cstdlib>
# include <cstdio>
using namespace std;
 
main()
{
   string a;
   freopen ("C:\\input.txt", "r", stdout);  //переключаем поток на ввод из файла
   cin >> a;                                //вводим из файла
 
   fclose (stdout);
}
Khelleos
37 / 37 / 7
Регистрация: 13.05.2010
Сообщений: 283
Записей в блоге: 1
05.07.2013, 09:06     cin чтение из файла C++ #17
Цитата Сообщение от xlxndr Посмотреть сообщение
Читать из файла с помощью CIN конкретно можно так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
# include <iostream>
# include <cstdlib>
# include <cstdio>
using namespace std;
 
main()
{
   string a;
   freopen ("C:\\input.txt", "r", stdout);  //переключаем поток на ввод из файла
   cin >> a;                                //вводим из файла
 
   fclose (stdout);
}
stdout Это же запись

Вот так надо делать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
int main()
{
   fstream("input.txt", "r", stdin);
   fstream("output.txt", "w", stdout);
 
   int a, b;
   cin >> a >> b;
   cout << a + b;
 
   return 0;
}
xlxndr
 Аватар для xlxndr
56 / 8 / 3
Регистрация: 14.06.2013
Сообщений: 115
05.07.2013, 12:59     cin чтение из файла C++ #18
Да, там stdin нужно было написать...

C
1
2
3
4
5
6
7
8
9
10
11
12
13
# include <iostream>
# include <cstdlib>
# include <cstdio>
using namespace std;
 
main()
{
   string a;
   freopen("C:\\input.txt", "r", stdin);  //переключаем поток на ввод из файла
   cin >> a;                              //вводим из файла
 
   fclose (stdin);
}
а fstream - это класс, а не функция... и с помощью такого способа используется не CIN И COUT, а имя объекта fstream.

Добавлено через 4 минуты
Если использовать объект fstream, тогда так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
    char buff[50];                                   //декларируем массив для промежуточного хранения текста
 
    ofstream outfile("myfile.txt");                  //создаем объект класса ofstream и связываем его с файлом mytext.txt
    outfile << "Этот текст будет в файле" << endl;   //записываем текст в файл
    outfile.close();                                 //отделяем файл от объекта outfile (закрываем файл)
 
    ifstream infile("myfile.txt");                   //создаем объект класса ifstream и связываем его с файлом mytext.txt
 
    infile.getline(buff,40);                         //считываем всю строку с ТОГО МЕСТА, где мы остановились
    cout << buff << endl;                            //выводим эту строку
    infile.close();                                  //закрываем файл
}
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
05.07.2013, 13:03     cin чтение из файла C++ #19
Уважаемые некропостеры, тут требовалось организовать ввода cin'ом без fopen, scanf и ifstream.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2013, 13:35     cin чтение из файла C++
Еще ссылки по теме:

C++ Cin, чтение с конца полученного потока
C++ Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами
C++ Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear()

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

Или воспользуйтесь поиском по форуму:
Khelleos
37 / 37 / 7
Регистрация: 13.05.2010
Сообщений: 283
Записей в блоге: 1
05.07.2013, 13:35     cin чтение из файла C++ #20
xlxndr, точно, попутал с freopen
Yandex
Объявления
05.07.2013, 13:35     cin чтение из файла C++
Ответ Создать тему
Опции темы

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