Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2011, 16:31   #1
Furutsu
 
Регистрация: 30.10.2011
Сообщений: 7
По умолчанию консоль С++ проблема с файлами

Не могу разобраться с этой задачей.
"Нужна программа, которая будет получать
из командной строки параметр - имя файла.
Нужно открыть этот файл и заменить в нем
все символы '6' на '7'".
Не знаю как сделать так, чтобы пользователь ввел адрес к файлу в консоле, а программа открыла его, нашла в нем все цифры 6 и поменяла на 7 и закрыла... исходника никакого приложить немогу, вообще чет голяк нету идей как написать его, кто может помочь? На С++ под линукс надо
Furutsu вне форума Ответить с цитированием
Старый 30.10.2011, 17:37   #2
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от Furutsu Посмотреть сообщение
Не могу разобраться с этой задачей.
"Нужна программа, которая будет получать
из командной строки параметр - имя файла.
Нужно открыть этот файл и заменить в нем
все символы '6' на '7'".
Не знаю как сделать так, чтобы пользователь ввел адрес к файлу в консоле, а программа открыла его, нашла в нем все цифры 6 и поменяла на 7 и закрыла... исходника никакого приложить немогу, вообще чет голяк нету идей как написать его, кто может помочь? На С++ под линукс надо
Это же просто ! Под Windows работает, а под линукс не проверяла
Код:
#include <iostream>
#include <iterator>
#include <fstream>
#include <string>
#include <algorithm>
#include <memory>

int main(int argc, char* argv[])
{
   if ( argc != 2)   { std::cout << "Error ! Need filename." << std::endl; return 0; }
   std::string text( (std::istreambuf_iterator<char>( *(
      std::auto_ptr< std::ifstream>( 
      new std::ifstream( argv[1]) )).get() )),
      std::istreambuf_iterator<char>());
   std::replace( text.begin(), text.end(), '6', '7');
   std::ofstream out( argv[1]);
   std::copy( text.begin(), text.end(), std::ostreambuf_iterator<char>( out));
   out.close();
   std::cout << "Replace complete !" << std::endl;
   return 0;
}
Из консоли ввести имя программы, а через пробел имя файла !
An1ka вне форума Ответить с цитированием
Старый 30.10.2011, 17:56   #3
Furutsu
 
Регистрация: 30.10.2011
Сообщений: 7
По умолчанию

Огромнещее спасибо тебе... легко да не спорю, но я буквально токо основы доучил и то Си мне бы ещё бы еслиб объеснения всего это когда, что зачем и для чего... было бы супер
Furutsu вне форума Ответить с цитированием
Старый 30.10.2011, 18:40   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Furutsu

Код:
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

int main (int argc, char *argv[])
{
	if (argc < 2) {
		cout << "not enough actual parameters" << endl;
		return 1;
	}

	char *buff;
	size_t length;

	ifstream is(argv[1]);

	is.seekg(0, ios::end);
	length = is.tellg();
	is.seekg(0, ios::beg);

	buff = new char[length];
	is.read(buff, length);
	is.close();

	replace(buff, buff + length, '6', '7');

	ofstream os(argv[1]);
	os.write(buff, length);
	os.close();

	delete[] buff;

	return 0;
}
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 30.10.2011, 19:08   #5
Furutsu
 
Регистрация: 30.10.2011
Сообщений: 7
По умолчанию

а как сделать, чтоб в консоле вводим к примеру адрес к проге, она запускается и только тогда выводиться сообщение
std::cout<<"Введите адрес к файлу"<<endl;
cin>> что тут надо сделать? >> endl; чтоб то что он введет было адресом к файлу и адрес передался был уже на выполнение
Furutsu вне форума Ответить с цитированием
Старый 30.10.2011, 20:03   #6
tyrnikMan
 
Регистрация: 30.10.2011
Сообщений: 8
По умолчанию

В таком случае нужно объявить строку. В которую оператором ввода cin считать введённый с клавиатуры адрес. Всё это легко можно сделать, если разобраться с темой символы и строки в С++
tyrnikMan вне форума Ответить с цитированием
Старый 30.10.2011, 20:30   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

tyrnikMan, камрад, мне одному кажется, что кто-то спамит?
И ссылка вирусная, знаете ли. Кнопка.
Abstraction вне форума Ответить с цитированием
Старый 31.10.2011, 04:04   #8
tyrnikMan
 
Регистрация: 30.10.2011
Сообщений: 8
По умолчанию Непонятно

То есть, оставлять контекстные ссылки на СДЛ, давать советы форумчанам по теме данного форума расценивается как спам???
P. S. ссылка не вирусная ESET врёт!!!
tyrnikMan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с файлами Sepherot Общие вопросы по Java, Java SE, Kotlin 3 21.04.2011 19:32
Проблема с файлами ini WinMen Общие вопросы Delphi 3 08.11.2010 10:43
проблема с файлами в Pascale velgelmina Помощь студентам 3 26.03.2010 23:14
Проблема с типизированными файлами Siluet Общие вопросы Delphi 1 04.10.2009 14:08