Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос: открыть файл и занести его содержание в вектор  (Прочитано 19672 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Russian
Гость
« : 09-02-2004 09:33 » 

Программа должна открыть файл и занести его содержание в вектор. Делал все как в книге, но что то не так!
Пожалуйста укажите на ошибку

#include <iostream.h>
#include <fstream.h>
#include <vector.h>
#include <string.h>

int main()
{
string file_name;

cout <<"File name: ";
cin >>file_name;

ifstream infile(file_name.c_str(),ios::in);
vector<string, allocator> *lines_of_text=new vector<string, allocator>;
string textline;

while (getline(infile,textline,'\n'))
  {
  cout <<textline<<endl;
  lines_of_text->push_back(textline);
  }


return 0;
}
Записан
Anchorite
Гость
« Ответ #1 : 09-02-2004 11:28 » 

#include <iostream>
#include <fstream>
#include <vector>
#include <string>

using namespace std;

int main()
{
  string file_name;

  cout <<"File name: ";
  cin >>file_name;

  ifstream infile(file_name.c_str(),ios::in);
  vector<string> *lines_of_text=new vector<string>;
  string textline;

  while (getline(infile,textline,'\n')) {
    cout <<textline<<endl;
    lines_of_text->push_back(textline);
  }

  return 0;
}
Записан
Russian
Гость
« Ответ #2 : 10-02-2004 08:32 » 

using namespace std;
- что означает
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #3 : 10-02-2004 09:53 » 

Тему я исправил.
using namespace std;
означает использовать пространство имен std.
подробиние не однократно обсуждалось в форуме.

И смотри статейки на Весельчаке Для начинающих по C++
https://club.shelek.ru/view.php?id=62&type=0
Записан

Странно всё это....
Russian
Гость
« Ответ #4 : 11-02-2004 09:23 » 

#include <iostream>
#include <fstream>
#include <vector>
#include <string>

using namespace std;

int main()
{
string file_name;
string spouse("123");
string textline;
vector<string> lines_of_text;

cout <<"File name: ";
cin >>file_name;

ifstream infile(file_name.c_str(),ios::in);
   lines_of_text.push_back(spouse);
    while (getline(infile,textline,'\n')) {
    cout <<textline<<endl;
    lines_of_text.push_back(textline);
    }
infile.close();


ofstream outfile(file_name.c_str());
  vector<string>::iterator iter=lines_of_text.begin();
  vector<string>::iterator iter_end=lines_of_text.end();

  for (iter;iter!=iter_end;++iter)
     outfile<<lines_of_text<<endl;
outfile.close();

return 0;
}

Я дописал программу и снова ошибка!
Как исправить теперь?
Записан
Russian
Гость
« Ответ #5 : 11-02-2004 09:24 » 

#include <iostream>
#include <fstream>
#include <vector>
#include <string>

using namespace std;

int main()
{
string file_name;
string spouse("123");
string textline;
vector<string> lines_of_text;

cout <<"File name: ";
cin >>file_name;

ifstream infile(file_name.c_str(),ios::in);
   lines_of_text.push_back(spouse);
    while (getline(infile,textline,'\n')) {
    cout <<textline<<endl;
    lines_of_text.push_back(textline);
    }
infile.close();


ofstream outfile(file_name.c_str());
  vector<string>::iterator iter=lines_of_text.begin();
  vector<string>::iterator iter_end=lines_of_text.end();

  for (iter;iter!=iter_end;++iter)
     outfile<<lines_of_text<<endl;
outfile.close();

return 0;
}

Я дописал программу и снова ошибка!
Как исправить теперь?

https://club.shelek.ru/view.php?id=62&type=0 - не работает
Записан
Serega
Гость
« Ответ #6 : 11-02-2004 10:53 » 

outfile<<lines_of_text<<endl;
замени на
outfile<<*iter<<endl;
Записан
Serega
Гость
« Ответ #7 : 11-02-2004 10:56 » 

Ссылка, которую ты дал, указывает в никуда
Записан
Serega
Гость
« Ответ #8 : 11-02-2004 11:00 » 

Можно вывести содержимое вектора в поток и другим способом
вот так:
Код:
for_each( lines_of_text.begin(), lines_of_text.end(), ostream_iterator(outfile,"\n") );
и не забудь
Код:
#include <algorithm>
« Последнее редактирование: 23-11-2007 21:48 от Алексей1153++ » Записан
Russian
Гость
« Ответ #9 : 12-02-2004 09:26 » 

2Serega: спасибо тебе, я купил и учусь по книге "Язык программирования С++" Авторы: Липпман и Лажойе. Книга хорошая, толстая но там попадаються ошибки и не все программы компилируються.

Код:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>

using namespace std;

int main()
{
string file_name;
string spouse("123");
string textline;
vector<string> lines_of_text;

cout <<"File name: };
cin >>file_name;

ifstream infile(file_name.c_str(),ios::in);
   lines_of_text.push_back(spouse);
    while (getline(infile,textline,'\n')) {
    cout <<textline<<endl;
    lines_of_text.push_back(textline);
    }
infile.close();


ofstream outfile(file_name.c_str());
  vector<string>::iterator iter=lines_of_text.begin();
  vector<string>::iterator iter_end=lines_of_text.end();

  for (iter;iter!=iter_end;++iter)
     outfile<<*iter<<endl;
outfile.close();

return 0;
}

Программа для добавления в начало файла отной строки!
У меня еще вопрос - как удалить файл?
И как определить путь к папке windows если  она случайно не на месте ?
« Последнее редактирование: 23-11-2007 21:48 от Алексей1153++ » Записан
Serega
Гость
« Ответ #10 : 12-02-2004 10:24 » 

Удалить файл можно с помощью функции int remove(сonst char *path);

Узнать где винда можно с помощью char* getenv(const char *varname);

char* windowsPath = getenv("windir");

Если хочешь больше узнать о run-time library ищи в MSDN: Run-Time Library Reference
там Run-Time Routines by Category
Записан
Russian
Гость
« Ответ #11 : 13-02-2004 15:27 » 

Еще раз спасибо. MSDN - где искать? Вообще подскажи русские ресурсы где можно найти описание библиотек.

==================
http://InAttack.h10.ru
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 13-02-2004 17:38 » 

Russian, MSDN у первоисточника http://msdn.microsoft.com , а насчет по-русски сомневаюсь - быстрее всего такого вообще нет. Но многие ф-ии в win взяты из unix/posix - это по-русски найти можно - не ленись, воспользуйся поиском (ищи определенные ф-ии - так быстрее найдешь).
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
grozny
Гость
« Ответ #13 : 13-02-2004 22:49 » 

по-русски можешь посмотреть http://rsdn.microsoft.com - они кое-что перевели
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #14 : 14-02-2004 09:11 » 

Ссылки на разделы сменились - на статьи нет.
Ссылка на курсы для начинающих теперь выглядит так.
https://club.shelek.ru/view.php?id=3

Естественно сохранить ID разделов не было возможности при реконсрукции самих разделов...

Думаю теперь ввобще менять структуру базы координально не придется - я вшил в нее возможность многоуровневых каталогов, просто не реализовал, пока не надо.
Записан

А птичку нашу прошу не обижать!!!
Russian
Гость
« Ответ #15 : 21-02-2004 13:31 » 

Еще вопрос, в delphi есть функция генератор случайных чисел (random),
а в c++ такая есть?

==================
http://InAttack.h10.ru
Записан
Anchorite
Гость
« Ответ #16 : 21-02-2004 17:52 » 

Про Дельфи ничего не скажу - не программирую на нем.
А в С/С++ есть:

Required header - <stdlib.h>
void srand( unsigned int seed ) - Sets a random starting point.
int rand( void ) - Generates a pseudorandom number.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #17 : 22-02-2004 13:52 » 

Russian, если пишешь с использованием событий windows, то можно сделать так : содержимое некоторой глобальной переменной (например типа DWORD) считать псевдослучайным числом, а в каждом обработчике событий делать изменение этой переменной - по любому угодно закону, например увеличение на 10 или прибавление первого аргумента функции обработчика, явно приведённого к типу DWORD

это грубый способ, но гарантируется неповторимость числа, правда только в том случае, если события инициируются человеком...
Записан

Russian
Гость
« Ответ #18 : 23-02-2004 13:55 » 

Спасибо, попробую.

==================
http://InAttack.h10.ru
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines