Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение с текстового файла, чтение с файла 
:(
    Опции темы
maxfol
Дата 28.3.2012, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.2.2009

Репутация: нет
Всего: нет



Есть текстовой файл с данными о результатах матча (2:2 1:3 3:1 и тд.). Я считываю каждые 10 результатов в массив (или int или char, такие условия). Каким образом я могу разделить эти данные (получить кол-во забитых мячей домашней команды и гостей) что бы потом с ними что то сделать...
Или как вариант, во время считывания данных разбить их, и закинуть в два разных массива.... Заранее спасибо, и если можно ответы поподробнее, а то теория чутка страдает...  smile
PM MAIL   Вверх
Cheloveck
Дата 29.3.2012, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 5
Всего: 32



Код

#include <cstdio>

int main()
{
    FILE * file = fopen("file.txt", "r");
    int x, y;
    while(fscanf(file, "%d:%d", &x, &y) > 0) {
        printf("First = %d, Second = %d\n", x, y);
    }
    fclose(file);
    return 0;
}



--------------------
user posted image
PM Jabber   Вверх
ambler
Дата 29.3.2012, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 27.10.2009

Репутация: нет
Всего: нет



В стиле C++:
Код

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

class CScore
{
public:
    CScore(int sc1, int sc2){score1 = sc1; score2 = sc2;}
    int score1;
    int score2;
    friend ostream& operator<<(ostream& os, const CScore sc){ return os << sc.score1 << " : " << sc.score2; }
};

void printScores(CScore sc)
{
    cout << sc << endl;
}

void redFile(string fileName)
{
    fstream file;
    vector<CScore> AllScores;

    file.open(fileName.c_str());
    int score1 = 0, score2 = 0;
    char delimiter;
    while (!file.eof())
    {
        file >> score1 >> delimiter >> score2;
        //cout << score1 << " : " << score2 << endl;
        AllScores.push_back(CScore(score1, score2));
    }
    file.close();

    for_each(AllScores.begin(), AllScores.end(), printScores);

}


int main()
{
    redFile("D:\\1.txt");
    return 0;
}



Файл 1.txt
Код

2:2 1:3 3:1

PM MAIL   Вверх
baldina
Дата 29.3.2012, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



если есть строка вида "xxx:yyy", то разделить её на две по разделителю ':' можно так:
в C
Код

char str[] = "xxx:yyy";
char *left = strtok (str,":");
char *right = strtok (NULL,":");

в С++
Код

std::string str = "xxx:yyy";
size_t pos = str.find(':');
std::string left = str.substr(0, pos);
std::string right = str.substr(pos+1);

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0753 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.