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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вектор в STL 
V
    Опции темы
ak2007
  Дата 10.8.2007, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нашел в сети этот форум. Он отличный!
Искал ответ на вопрос:

Как мне присвоить значение переменной. Это значение записывается
в файл "file.txt". Как туда записать я знаю (код ниже). Но мне нужно
записывать эту текстовую строку не в файл, а в переменную.

Есть несколько строк.
Код

ak.push_back("bla bla bla");
ak.push_back("rrrr");
ak.push_back("sss");



Я нахожу нужную и записываю её в файл.

Код

  std::vector<std::string>::iterator it = std::find(ak.begin(), ak.end(), "sss");

  if(it == ak.end())
  {

  }
  else
  {

// Я нашел "sss". Теперь запишу её в файл. А как мне "sss" присвоить
// в качестве значения переменной.


    std::ofstream ofile ("file.txt");
std::copy (ak.begin (), ak.end (), std::ostream_iterator<std::string> (ofile, "\n"));

// Что то типа string abc = "sss"; но при условии, что "sss" может быть
// иным текстом. Так вот не работает:

// abc = it; и так тоже: abc = std::find(ak.begin(), ak.end(), "sss");  

}

PM MAIL   Вверх
NoNo
Дата 10.8.2007, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



попробуй буфер в памяти "strstream"
и выводи туда данные как в обычный фаил....
а оттуда сможешь вытащить их куда угодно

PM MAIL   Вверх
Vyacheslav
Дата 10.8.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



Что Вы очень сложно пишите  в файл строку smile  . В вашем варианте туда пишется не "sss", а все содержимое вектора
Код

std::vector<std::string>::iterator it = std::find(ak.begin(), ak.end(), "sss");

  if(it == ak.end())
  {

  }
  else
  {

// Я нашел "sss". Теперь запишу её в файл. А как мне "sss" присвоить
// в качестве значения переменной.


    std::ofstream ofile ("file.txt");
    ofile << *it;
    string abc = *it;
}



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
ak2007
Дата 10.8.2007, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(NoNo @ 10.8.2007,  16:29)
попробуй буфер в памяти "strstream"
и выводи туда данные как в обычный фаил....
а оттуда сможешь вытащить их куда угодно

Так не пойдет. Нужно напрямую в переменную.

Добавлено через 53 секунды
Цитата(Vyacheslav @ 10.8.2007,  16:35)
Что Вы очент сложно пишите  в файл. Во всяком случае в вашем варианте туда пишется не "sss", а все содержимое вектора
Код

std::vector<std::string>::iterator it = std::find(ak.begin(), ak.end(), "sss");

  if(it == ak.end())
  {

  }
  else
  {

// Я нашел "sss". Теперь запишу её в файл. А как мне "sss" присвоить
// в качестве значения переменной.


    std::ofstream ofile ("file.txt");
    ofile << *it;
    string abc = *it;
}

Да. Я условно так написал. Суть понятна.

Добавлено через 2 минуты и 46 секунд
Vyacheslav СПАСИБО.
Я нашел. Просто забыл как smile
PM MAIL   Вверх
Xenon
Дата 10.8.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Жаль в STL не засунули copy_if (о чем сам Страуструп сам себя карает в книге). Ну, не проблема, можно и самому smile 
Код

template <typename PRED, typename InIter, typename OutIter> void copy_if(InIter FIRST, InIter LAST, OutIter OUT, PRED Cond)
{
    for ( ; FIRST != LAST; ++FIRST)
        if ( Cond(*FIRST) ) OUT = *FIRST;
}

int main(int argc, char argv[]) 
{
    std::ofstream out_file("d:\\myfile.txt");
    std::vector<std::string> arr;
    arr.push_back("abr");
    arr.push_back("sss");
    arr.push_back("sss");
    arr.push_back("bdfb");
    arr.push_back("abrr");
    copy_if( arr.begin(), arr.end(), std::ostream_iterator<std::string>(out_file, " "), std::bind2nd( std::equal_to<std::string>(), "sss" ) );
    std::cin.get();
    return 0;
}


Это сообщение отредактировал(а) Xenon - 10.8.2007, 18:12


--------------------
user posted image  
PM MAIL   Вверх
Любитель
Дата 12.8.2007, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Цитата(Xenon @  10.8.2007,  18:10 Найти цитируемый пост)
OUT = *FIRST

Итератору присваиваем разыменованный итератор?  smile Может так: *OUT++ = *FIRST ?


--------------------
PM MAIL ICQ Skype   Вверх
Xenon
Дата 13.8.2007, 03:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Любитель, да-да, ошибься пока катал smile


--------------------
user posted image  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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