Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
oleg@tor1
32 / 17 / 2
Регистрация: 05.09.2011
Сообщений: 152
#1

Как направить вывод из файла - C++

16.03.2013, 21:28. Просмотров 300. Ответов 8
Метки нет (Все метки)

Господа, подскажите, как быть с такой задачей.

Есть текстовый файл. Допустим, 2 предложения, 10 слов всего. Необходимо каждое слово помещать в массив или вектор (не важно) по отдельности (для дальнейшего сравнения). Выделить слова думаю функцией "strtok", массив, думаю, типа vector <string> V;
Но как использовать strtok, если текст в файле?? freopen ("file_name", "r", stdin) ??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2013, 21:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как направить вывод из файла (C++):

Вывод из файла работает на так как надо - C++
Привет всем) У меня проблемка.. Я делаю тест на с++ и проблема в том что последнюю строчку из файла показывает 4 раза.. подскажите как это...

Как реализовать ввод адреса файла и соответственно вывод - C++
Нужно, чтобы программа спрашивала название файла, который нужно открыть, подразумеваю(1.txt), а так же куда сохранить изменения,...

Как организовать вывод двумерного массива (целые числа) из текстового файла? - C++
Люди, объясните младшему товарищу. как организовать вывод двумерного массива(целые числа) из текстового файла. скрин прилагается. работаю...

Вот я создал фунцкцию...и немогу направить в менюшку чтоб она там работала!! - C++
я создал сортировку по возростанию функцией.........но немогу зделать чтоб она работала в меню!!!!Помогите пожалуйста хотябы по автору...

Как направить вывод telnet переменную? - Bash
Здравствуйте. Есть такой скрипт: #!/bin/sh (sleep 1; echo user user@user.ru; sleep 1; echo pass userpass; sleep 1; echo...

Как сделать синусоиду и направить ее в динамики? - Delphi
Привет всем! Подскажите, пожалуйста, кто сталкивался, как сделать синусоиду в Delphi и пустить ее на динамики, чтобы был звук? Звук...

8
Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
16.03.2013, 21:36 #2
Можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
 
using namespace std;
 
int main()
{
    ifstream input("1.txt",ios::in);
    vector<string> V;
    if(!input){
               cout<<"Error!";
               return 1;
    }
    while(!input.eof())
    {
           string tmp;
           input >> tmp;
           V.push_back(tmp);
    }
    for(int i = 0;i<V.size();i++)
       cout<<V[i]<<endl;
    system("pause");
}
1
oleg@tor1
32 / 17 / 2
Регистрация: 05.09.2011
Сообщений: 152
16.03.2013, 22:06  [ТС] #3
Да, как вариант, добавить в вектор, дело понятное, тем не менее спасибо за участие.
C++
1
2
3
4
while (!feof(file)) // Заполняем вектор текстом из файла.
{
    V_1.push_back(char(fgetc(file)));
}
но как юзать strtok в таком случае ?
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
16.03.2013, 22:12 #4
Цитата Сообщение от oleg@tor1 Посмотреть сообщение
но как юзать strtok в таком случае ?
co string'oм никак.
1
oleg@tor1
32 / 17 / 2
Регистрация: 05.09.2011
Сообщений: 152
16.03.2013, 22:41  [ТС] #5
Тогда вопрос.... В вектор слова заносятся вместе с ближайщими знаками препинания, как от них можно избавиться?
0
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
16.03.2013, 22:52 #6
пройтись по вектору и обработать каждое слово как надо. обработка будет заключаться в удалении знаков препинания по краям. у std::string все нужное для удаления есть.
еще лучше делать эту обработку перед вставкой в вектор.
1
oleg@tor1
32 / 17 / 2
Регистрация: 05.09.2011
Сообщений: 152
16.03.2013, 23:02  [ТС] #7
Цитата Сообщение от DU Посмотреть сообщение
пройтись по вектору и обработать каждое слово как надо. обработка будет заключаться в удалении знаков препинания по краям. у std::string все нужное для удаления есть.
еще лучше делать эту обработку перед вставкой в вектор.
Будь добр немного подробнее про удалении знаков препинания по краям.

Часть моего кода кода по теме:
C++
1
2
3
4
5
6
7
8
9
10
11
12
    ifstream EDI("text.txt");  // Проверяем открыт ли файл.
if (EDI.is_open() == NULL)
    {
        cout << "Error! There's no file."<< endl;
    }
 
while (!EDI.eof())
{
    string tmp;
    EDI >> tmp;
    V_1.push_back(tmp);
}
0
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
16.03.2013, 23:24 #8
ну на коленке примерно так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
bool isPunctuation(char ch)
{
    return  ch == '.'
         || ch == ','
         || // тут прочие знаки
         ;
}
 
// ",,.some_string.," - хорошая строка
// "some,string" - плохая строка. останется без изменений.
void removePuntuation(std::string& str)
{
   if (!str.empty() && isPunctuation(*(str.end() - 1))
   {
      str.erase(str.end() - 1);
   }
 
   if (!str.empty() && isPunctuation(*str.begin()))
   {
      str.erase(str.begin());
   }
 
   removePuntuation(str);
}
 
....
 
 
while (!EDI.eof())
{
    string tmp;
    EDI >> tmp;
    removePuntuation(tmp);
    if (!tmp.empty())
    {
      V_1.push_back(tmp);
    }
}
Не компилил, не проверял
1
oleg@tor1
32 / 17 / 2
Регистрация: 05.09.2011
Сообщений: 152
17.03.2013, 00:00  [ТС] #9
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <string>
#include <cctype>
...
std::string str;
std::getline(std::cin, str);
for ( std::string::iterator i = str.begin(); i != str.end(); ++i )
  if ( ispunct(*i) )
    *i = ' ';
Интересно, как применить такой подход к содержимому вектора....
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2013, 00:00
Привет! Вот еще темы с ответами:

Как направить домен на DNS сервер? - Хостинг
Здравствуйте! Объясните мне пожалуйста, как нужно направить домен на DNS сервер. Я первый раз хочу попробовать разместит сайт в интернете,...

Как направить поток вывода в файл? - Bash
Никак не могу вывести поток в файл, поток направляю, файл создает, а при просмотре командой cat, файл пустой. Пишу в виртуальной консоли ...

Есть форма, как направить текст от форм в блокнот? - PHP
Есть форма, как направить текст от форм в блокнот? &lt;?php function show_form() { echo '&lt;html&gt;'; echo '&lt;head&gt;'; echo...

Как надо расположить плоское зеркало, чтобы направить лучи горизонтально? - Оптика
Помогите пожалуйста, не могу сделать рисунок к этой задаче чтобы решить: Солнечные лучи составляют с горизонтом угол 40°. Как надо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
17.03.2013, 00:00
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru