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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2010, 02:34   #1
mysan
 
Аватар для mysan
 
Регистрация: 20.01.2010
Сообщений: 9
Лампочка Выбор строки в файле на C++

Здравствуйте уважаемые программисты !

У меня есть файл server.cfg :

echo Executing Server Config...
lanmode 0
rcon_password changemde
maxplayers 500
port 7777
hostname CEPBEP
gamemode0 timertest
announce 0
query 1
weburl ******
maxnpc 0
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000

Мне надо выбрать строку port .

Запихнуть в переменную например int port; число 7777

после чего при:

printf("ПОРТ %d", port);

надо чтобы выводило этот порт.

Я пробовол так:

ifstream input_file("server.cfg");
char one[64], two[64], three [64], fo [64], fi [64];
input_file.getline(one, sizeof(one));
input_file.getline(two, sizeof(two));
input_file.getline(three, sizeof(three));
input_file.getline(fo, sizeof(fo));
input_file.getline(fi, sizeof(fi));
cout << fi << endl;

но оно мне писало "port 7777" , а надо "7777"

да и строка port не всегда 5-ая ... по этому надо чтобы её как-то находило.

Помогите пожалуйста , буду очень благодарен вам
mysan вне форума Ответить с цитированием
Старый 20.01.2010, 03:14   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

на скорую руку:
Код:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	ifstream input_file("server.cfg");
	string   line;
	int      port;
	
	if( !input_file ) {
		cerr << "File not found." << endl;
		return -1;
	}

	while( !input_file.eof() ) {
		getline(input_file, line);
		if(line.find("port") != string::npos)
			break;
	}

	if( !input_file.eof() ) {
		port = atoi(line.c_str() + 5); // пропускаем первые 5 символов, остальное - число, обозначающее порт
		cout << "port = " << port << endl;
	} else
		cout << "port not found" << endl;		

	return 0;
}
netrino вне форума Ответить с цитированием
Старый 20.01.2010, 14:11   #3
mysan
 
Аватар для mysan
 
Регистрация: 20.01.2010
Сообщений: 9
По умолчанию

Спасибо большое вам netrino. Вот мне еще способ подказали кому интересно:


Код:
ifstream fin("server.cfg");
char str[40]="";
int n;
while(!fin.eof())
{
fin.getline(str,39);
if(!strncmp(str,"port",4))
{
cout<<atoi(str+5);
break;
}
}

Проверил, работает даже когда port в другом месте.

В общем проблема решена...

Последний раз редактировалось Stilet; 20.01.2010 в 14:24.
mysan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск строки в файле Rekky PHP 24 10.12.2009 11:34
Строки в текстовом файле GreBer Помощь студентам 2 29.11.2009 21:17
поиск строки в файле getUp Общие вопросы C/C++ 7 24.10.2009 23:19
Поиск строки в файле Gwynbleidd Общие вопросы C/C++ 1 08.10.2008 01:45
Строки в файле werser Общие вопросы Delphi 1 24.05.2008 21:22