содержимое файл а в мап
От: Аноним  
Дата: 02.08.09 13:37
Оценка:
добрый день
есть след тесктовый файл
Цитата
bookmark3,value1
bookmark1,value2
bookmark2,value3

как его зогнать в std::map ?
т.е получить key = bookmark3 value = value1 ....
Re: содержимое файл а в мап
От: Sheridan Россия  
Дата: 02.08.09 17:38
Оценка:
Приветствую, Анонимус, вы писали:

> есть след тесктовый файл

> Цитата
> bookmark3,value1
> bookmark1,value2
> bookmark2,value3
> как его зогнать в std::map ?
> т.е получить key = bookmark3 value = value1 ....

Парсер пишется на коленке за час максимум. Ориентироваться по запятой и переводу строки.
avalon 1.0rc2 rev 296, zlib 1.2.3
build date: 01.08.2009 18:30:24 MSD +04:00
Qt 4.5.2
Matrix has you...
Re: содержимое файл а в мап
От: Sharpeye Россия  
Дата: 03.08.09 07:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>добрый день

А>есть след тесктовый файл
А>Цитата
А>bookmark3,value1
А>bookmark1,value2
А>bookmark2,value3

А>как его зогнать в std::map ?

А>т.е получить key = bookmark3 value = value1 ....

Типа этого:

typedef map< string, string > Bookmarks;

    Bookmarks bookmarks;

    ifstream file( "bookmarks.txt" );

    while( file )
    {
        string line;
        getline( file, line );

        size_t i = line.find( ',' );

        if( string::npos != i )
        {
            string key = line.substr( 0, i );
            string value = line.substr( i + 1 );

            bookmarks.insert( make_pair( key, value ) );
        }
    }
Re[2]: содержимое файл а в мап
От: jazzer Россия Skype: enerjazzer
Дата: 03.08.09 16:38
Оценка: +2
Здравствуйте, Sheridan, Вы писали:

S>Парсер пишется на коленке за час максимум. Ориентироваться по запятой и переводу строки.


Что там писать час...
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: содержимое файл а в мап
От: Sheridan Россия  
Дата: 03.08.09 17:23
Оценка: :)
Приветствую, jazzer, вы писали:

j> S>Парсер пишется на коленке за час максимум. Ориентироваться по запятой и переводу строки.

j> Что там писать час...
Оптимизировать (ц)
avalon 1.0rc2 rev 296, zlib 1.2.3
build date: 03.08.2009 15:39:57 MSD +04:00
Qt 4.5.2
Matrix has you...
Re[2]: содержимое файл а в мап
От: Аноним  
Дата: 04.08.09 09:47
Оценка:
Здравствуйте, Sharpeye, Вы писали:

S>Здравствуйте, Аноним, Вы писали:


А>>добрый день

А>>есть след тесктовый файл
А>>Цитата
А>>bookmark3,value1
А>>bookmark1,value2
А>>bookmark2,value3

А>>как его зогнать в std::map ?

А>>т.е получить key = bookmark3 value = value1 ....

S>Типа этого:


S>
S>typedef map< string, string > Bookmarks;

S>    Bookmarks bookmarks;

S>    ifstream file( "bookmarks.txt" );

S>    while( file )
S>    {
S>        string line;
S>        getline( file, line );

S>        size_t i = line.find( ',' );

S>        if( string::npos != i )
S>        {
S>            string key = line.substr( 0, i );
S>            string value = line.substr( i + 1 );

S>            bookmarks.insert( make_pair( key, value ) );
S>        }
S>    }
S>


а если данные такие:
test1,test2
test3test4,
test5,test6
Re[3]: содержимое файл а в мап
От: Анатолий Широков СССР  
Дата: 04.08.09 10:35
Оценка: +1
А>а если данные такие:
А>test1,test2
А>test3test4,
А>test5,test6

А Вы сами формально можете специфицировать формат файла? Если да, то по этой спецификации и пишите загрузчик.
Re[3]: содержимое файл а в мап
От: TarasCo  
Дата: 04.08.09 14:05
Оценка: :)
J>Что там писать час...

TDD?
Да пребудет с тобою сила
Re[2]: содержимое файл а в мап
От: igna Россия  
Дата: 04.08.09 14:57
Оценка: +1
Здравствуйте, Sharpeye, Вы писали:

S>        string line;
S>        getline( file, line );

S>        size_t i = line.find( ',' );

S>        if( string::npos != i )
S>        {
S>            string key = line.substr( 0, i );
S>            string value = line.substr( i + 1 );

S>            bookmarks.insert( make_pair( key, value ) );
S>        }


Наверное можно упростить:

        string key, value;
        getline( file, key, ',' );
        getline( file, value );

        if( !value.empty() )
            bookmarks[key] = value;
Re[4]: А что там оптимизировать? (-) ;)
От: Erop Россия  
Дата: 04.08.09 21:55
Оценка:
Здравствуйте, Sheridan, Вы писали:

j>> S>Парсер пишется на коленке за час максимум. Ориентироваться по запятой и переводу строки.

j>> Что там писать час...
S>Оптимизировать (ц)
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: пара вопросов по "данным"
От: Erop Россия  
Дата: 04.08.09 21:58
Оценка:
Здравствуйте, Аноним, Вы писали:

А>а если данные такие:

А>test1,test2
А>test3test4,
А>test5,test6

1) не ясно почему "test3test4,", а не "test3". Имелось в виду что-то конкретное, или это чисто так записалось?
2) IMHO, это должно обозначать, что ключу "test3test4" соответствует пустая строка Или такое соответствие должно записываться как-то иначе?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: содержимое файл а в мап
От: Erop Россия  
Дата: 04.08.09 21:59
Оценка:
Здравствуйте, igna, Вы писали:


I>Наверное можно упростить:


I>
I>        string key, value;
I>        getline( file, key, ',' );
I>        getline( file, value );

I>        if( !value.empty() )
I>            bookmarks[key] = value;
I>


А где тут обработка ошибок? Например строк, где запятой вовсе нет?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[5]: А что там оптимизировать? (-) ;)
От: Sheridan Россия  
Дата: 04.08.09 22:04
Оценка: :)
ВСЁ!!!!!!!!!111111адинадин
avalon 1.0rc2 rev 296, zlib 1.2.3
build date: 04.08.2009 23:01:24 MSD +04:00
Qt 4.5.2
Matrix has you...
Re[4]: содержимое файл а в мап
От: igna Россия  
Дата: 05.08.09 05:16
Оценка:
Здравствуйте, Erop, Вы писали:

E>А где тут обработка ошибок? Например строк, где запятой вовсе нет?


Обработка ошибок такая же как в исходном варианте.
Re[3]: содержимое файл а в мап
От: igna Россия  
Дата: 05.08.09 05:38
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Что там писать час...


А сколько, три минуты? Так напиши и покажи, жалко что ли.

Вот например для случая set<string> в самом деле просто:

    set<string> ss(
        (istream_iterator<string>(in)),
        (istream_iterator<string>()));


Давай самое простое решение для map<string, string>, где key и value в файле разделены запятой.
Re[4]: содержимое файл а в мап
От: Centaur Россия  
Дата: 05.08.09 05:59
Оценка:
Здравствуйте, igna, Вы писали:

I>Вот например для случая set<string> в самом деле просто:


I>
I>    set<string> ss(
I>        (istream_iterator<string>(in)),
I>        (istream_iterator<string>()));
I>

В таком варианте рискуем получить split по пробелам, а не только по строкам.
Re[5]: содержимое файл а в мап
От: igna Россия  
Дата: 05.08.09 07:50
Оценка: -1
Здравствуйте, Centaur, Вы писали:

C>В таком варианте рискуем получить split по пробелам, а не только по строкам.


Да, конечно. Я просто привел пример, который на самом деле простой. В достаточно хорошо продуманной стандартной библиотеке замена признака окончания ввода не должна значительно увеличивать объем кода; как, впрочем, и замена set на map. Но имеем, что имеем.
Re[5]: содержимое файл а в мап
От: Erop Россия  
Дата: 05.08.09 11:27
Оценка:
Здравствуйте, igna, Вы писали:
I>Обработка ошибок такая же как в исходном варианте.
В исходном варианте строчки без запятых вроде как пропускаются...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: содержимое файл а в мап
От: igna Россия  
Дата: 05.08.09 12:36
Оценка:
Здравствуйте, Erop, Вы писали:

E>В исходном варианте строчки без запятых вроде как пропускаются...


В моем тоже.
Re[7]: содержимое файл а в мап
От: Erop Россия  
Дата: 05.08.09 20:38
Оценка:
Здравствуйте, igna, Вы писали:

I>В моем тоже.

Зато в твоём нельзя записать пустую строку, в качестве значения, а в исходном было можно...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.