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

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

Войти
Регистрация
Восстановить пароль
 
Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
#1

Используя высокоуровневые функции работы с файлами, прочитать строку из файла - C++

27.05.2013, 19:16. Просмотров 484. Ответов 10
Метки нет (Все метки)

Здравствуйте!
Очень нужна помощь...
В этом задании нужно с помощью свой лично написанной функции избавиться от лишних пробелов и с помощью стандартной функции revers "перевернуть" строку.

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

Буду очень благодарна.
Я пробовала написать что-то своё, но, поняла, что для строк всё как-то гораздо сложней...

Просьба: напишите как можно проще...
СПАСИБО!


ЧАСТЬ ИНТ у меня есть, это всё я понимаю...
Как написать саму функцию?
Помогите...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 19:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Используя высокоуровневые функции работы с файлами, прочитать строку из файла (C++):

Прочитать 5-ю строку из файла - C++
подскажите пожалуйста как с помощью потоков прочесть текстовую строку и поместить её в массив?

Прочитать из файла заданную строку - C++
Немного запутался, если у меня есть в файле: abc def ghi Как мне засунуть в массив именно третью строчку?

Прочитать строку из файла на хостинге - C++
Всем привет. Нужно прочитать строку из файла, который находится в хостинге. Допустим файл находится в...

Прочитать из файла строку целиком - C++
char s1,s2,s3,s4; //Переменная будет считывать строку ifstream in ("D:\\1.txt"); //Открываем файл для считывания информации ...

Прочитать из файла строку с заданным номером - C++
Здравствуйте, в общем проблема такая: у меня есть файл и в файле по одному слову в строке, т.е.: америка кукуруза облако инфляция ...

С текстового файла прочитать строку слов - C++
1.С текстового файла прочитать строку слов. помогите решить очень нужно буду благодарен буду, просто напише код заранее спасибо.

10
zss
Модератор
Эксперт С++
6486 / 6049 / 1986
Регистрация: 18.12.2011
Сообщений: 15,690
Завершенные тесты: 1
27.05.2013, 19:24 #2
C++
1
2
3
4
5
6
7
8
string RemoveBlanks(string c)
{
    string a;
    for(int i=0;i<c.lenght();i++)
            if(c[i]!=' ')a.pushback(c[i]);
    a.reverse();
    return a;
}
1
Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.05.2013, 19:31  [ТС] #3
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
#include <fstream>
#include <string>
 
 
using namespace std;
 
string RemoveBlanks(string c)
{
    string a;
    for(int i=0;i<c.lenght();i++)
            if(c[i]!=' ')a.pushback(c[i]);
    a.reverse();
    return a;
}
 
int main()
{
    string file_in, file_out;
 
    cout << "Input: ";
    cin >> file_in;
    cout << "Output: ";
    cin >> file_out;
 
    ifstream in(file_in.c_str(), ios::in);
    ofstream out(file_out.c_str(), ios::out);
    if (!in || !out)
    {
        cerr << "error: couldn't open file(s)" << endl;
        return 1;
    }
 
    RemoveBlanks(file_in);
    in.close(); out.close();
 
    return 0;
}
Так?
Что-то не так....
0
zss
Модератор
Эксперт С++
6486 / 6049 / 1986
Регистрация: 18.12.2011
Сообщений: 15,690
Завершенные тесты: 1
27.05.2013, 19:37 #4
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
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
string RemoveBlanks(string c)
{
    string a;
    for(int i=0;i<c.length();i++)
            if(c[i]!=' ')a.push_back(c[i]);
    reverse(a.begin(),a.end());
    return a;
}
 
int main()
{
    string file_in, file_out;
    cout << "Input: ";
    cin >> file_in;
    cout << "Output: ";
    cin >> file_out;
    ifstream in(file_in.c_str(), ios::in);
    ofstream out(file_out.c_str(), ios::out);
    if (!in || !out)
    {
        cerr << "error: couldn't open file(s)" << endl;
        return 1;
    }
    string data;
    in>>data;
    in.close();
    RemoveBlanks(data);
    out<<data;
    out.close();
 
    return 0;
}
1
Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.05.2013, 20:33  [ТС] #5
Оно не то делает..
Во второй файл попадает только первое слово из первого файла...

Добавлено через 15 минут
Помогите разобраться, пожалуйста...Я не понимаю, что эта программка не так творит...

Добавлено через 10 минут
Сергей Сергеевич! Помогите...Пожалуйста

Добавлено через 10 минут
ну, кто-нибудь...Ну, пожалуйста
0
zss
Модератор
Эксперт С++
6486 / 6049 / 1986
Регистрация: 18.12.2011
Сообщений: 15,690
Завершенные тесты: 1
27.05.2013, 21:37 #6
C++
1
2
3
4
5
6
7
8
9
10
11
    while(!in.eof())
    {
        char buf[100];
        in.getline(buf,100);
        data=buf;
        RemoveBlanks(data);
        out<<data;
    }
 
    in.close();
    out.close();
1
Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.05.2013, 21:45  [ТС] #7
Спасибо, работает!
НО пробелы не пропадают лишние...
0
zss
Модератор
Эксперт С++
6486 / 6049 / 1986
Регистрация: 18.12.2011
Сообщений: 15,690
Завершенные тесты: 1
27.05.2013, 21:56 #8
Исправьте
C++
1
data=RemoveBlanks(data);
0
Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.05.2013, 21:59  [ТС] #9
Дело в том, что в задании написано, что пробелы больше 1-го должны быть заменены одним...а их теперь нет :-)))
0
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
27.05.2013, 22:26 #10
Можно считывать пословно. И не мучаться с этими преобразованиями.

Добавлено через 11 минут
C++
1
2
3
4
5
6
7
8
9
10
11
string RemoveBlanks(string c){
    istringstream istr(c);
    string s;
    vector<string> a;
    while (getline(istr, s, ' '))
            a.push_back(s);
    s.clear();
    for (auto i=s.rbegin();i!=s.rend();i++)
        s+=(*i);
    return s;
}
Как то так, типо, наверняка есть ошибки.

Добавлено через 59 секунд
Ну это, если править уже считанное.
0
zss
Модератор
Эксперт С++
6486 / 6049 / 1986
Регистрация: 18.12.2011
Сообщений: 15,690
Завершенные тесты: 1
27.05.2013, 22:28 #11
C++
1
2
3
4
5
6
7
8
9
string RemoveBlanks(string c)
{
    string a;
    for(int i=0;i<c.lenght()-1;i++)
            if(c[i]!=' ' && c[i+1]!=' ')a.pushback(c[i]);
    a.pushback(c[lenght()-1]);
    a.reverse();
    return a;
}
0
27.05.2013, 22:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2013, 22:28
Привет! Вот еще темы с ответами:

Прочитать строку из файла и записать ее в массив структуры - C++
Подскажите как это сделать.Есть файлик со строчками,чтобы он каждую строчку считывал в массив,отличный от другого.Одна строка будет...

Прочитать символы из файла, используя eof() (программа работает не так, как ожидается) - C++
Здравствуйте, мне нужно прочитать символы из файла(желательно с пробелами). Использую eof(), но складывается впечатление, что он не...

Как прочитать строку с пробелами из файла в одну переменную? - C++
есть текстовый файл, в нем 3 строки как прочитать 1ую строку(она с пробелами) в 1ну переменную пример: asdfasdq asdq 4 1 2 3 4 ...

Прочитать строку из файла, разделить слова и вывести количество символов - C++
Написал программу, которая должна прочитать строку из файла, разделить слова и вывести количество символов. Программа работает, но она...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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