Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94

Не работает код (программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот)

27.05.2013, 20:35. Показов 1796. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
#include "stdafx.h"
#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;
}
Программа считывает из файла строку, убирает лишние пробелы и записывает в другой файл строку, словами наоборот.

НО
Прога, которая тут, записывает в файл ЛИШЬ первое слово строки...
Помогите, прошу!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.05.2013, 20:35
Ответы с готовыми решениями:

Отредактировать строку удаляя лишние пробелы между словами
Отредактировать строку удаляя лишние пробелы между словами.На языке си.

Напишите функцию, которая получает строку и удаляет из неё лишние пробелы между словами
Вот такая вот задача.Напишите функцию, которая получает строку и удаляет из неё лишние пробелы между словами

отладить программу на языке С++, которая считывает из файла a.txt строку и записывает её в файл b.txt в обратном порядке
я это взяла из книги полностью готовый код, а он не идёт.Помогите отладить, пожалуйста #include &lt;string.h&gt; #include...

9
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.05.2013, 20:50
C++
1
2
3
string data;
getline(in, data);
in.close();
1
 Аватар для Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.05.2013, 21:20  [ТС]
Супер, спасибо!

Добавлено через 21 минуту
Вот работает...Но у меня вопрос...Функция reverse...Она переворачивает слова. А мне нужно, чтобы не переворачивались, а просто задом-наперёд были записаны...Есть ТАКАЯ функция?
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.05.2013, 21:28
Предложу я вот такой вариант(переворачивает каждое слово в строке):
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
#include <iostream>
#include <vector>
#include <iterator>
#include <fstream>
#include <string>
#include <sstream>
#include <algorithm>
 
int main()
{   
    std::ifstream ifs("D:/file.txt");
    if (ifs.is_open()) {
        std::ofstream ofs("D:/result.txt", std::ios::out | std::ios::ate);
        std::vector<std::string> lines;
        std::string temp;
        std::istringstream iss;
        while (std::getline(ifs, temp, '\n'))
        {
            iss.str(temp);
            lines.assign(std::istream_iterator<std::string>(iss), std::istream_iterator<std::string>()); //закидываем слова с строки в массив
            std::for_each(lines.begin(), lines.end(), [&](const std::string& s)
            {
                std::copy(s.rbegin(), s.rend(), std::ostream_iterator<char>(ofs));
                ofs<<' ';
            });
            ofs<<'\n';
            iss.clear();
        }
    } else {
        std::cout << "Error opening file..." << std::endl;
    }
    
    std::cout<<'\n';
    return 0;
}
1
 Аватар для Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.05.2013, 21:32  [ТС]
Вариант - класс!
И работает...
НО во больно непонятный...Увы...
Т.е. я так поняла, такой функции нет?
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.05.2013, 21:37
Вывод через стандартный алгоритм делается, через реверс итераторы:
C++
1
std::copy(s.rbegin(), s.rend(), std::ostream_iterator<char>(ofs));
Добавлено через 1 минуту
Вот еще вариант переворота каждой строки, если это надо было:
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 <vector>
#include <iterator>
#include <fstream>
#include <string>
#include <algorithm>
 
int main()
{
    std::ifstream ifs("D:/file.txt");
    if (ifs.is_open()) {
        std::ofstream ofs("D:/result.txt", std::ios::out | std::ios::ate);
        std::string temp;
        while (std::getline(ifs, temp, '\n'))
        {
            std::copy(temp.rbegin(), temp.rend(), std::ostream_iterator<char>(ofs));
            ofs<<'\n';
        }
    } else {
        std::cout << "Error opening file..." << std::endl;
    }
    
    std::cout<<'\n';
    return 0;
}
1
 Аватар для Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.05.2013, 21:44  [ТС]
Спасибо большое.
Обнаружила ещё ошибку...
ПРОБЕЛЫ не уходят!... что делать?...Как быть?
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.05.2013, 21:46
И, судя по вашей соседней теме, возможно вот такое решение вам подойдет:
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
#include <iostream>
#include <vector>
#include <iterator>
#include <fstream>
#include <string>
#include <sstream>
#include <algorithm>
 
int main()
{   
    std::ifstream ifs("D:/file.txt");
    if (ifs.is_open()) {
        std::ofstream ofs("D:/result.txt", std::ios::out | std::ios::ate);
        std::vector<std::string> lines;
        std::string temp;
        std::istringstream iss;
        while (std::getline(ifs, temp, '\n'))
        {
            iss.str(temp);
            lines.assign(std::istream_iterator<std::string>(iss), std::istream_iterator<std::string>()); //закидываем слова с строки в массив
            std::reverse_copy(lines.begin(), lines.end(), std::ostream_iterator<std::string>(ofs, " "));
            ofs<<'\n';
            iss.clear();
        }
    } else {
        std::cout << "Error opening file..." << std::endl;
    }
    
    std::cout<<'\n';
    return 0;
}
1
 Аватар для Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
27.05.2013, 21:51  [ТС]
ПРОБЕЛЫ не уходят!... что делать?...Как быть?
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.05.2013, 21:56
Ну, последний код точно должен все пробелы затирать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.05.2013, 21:56
Помогаю со студенческими работами здесь

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

Файл: Удалить из файла все лишние пробелы, оставив между словами не более одного пробела.
Дан текстовый файл. Удалить из него все лишние пробелы, оставив между словами не более одного пробела. Результат поместить в новый файл.

Программа удаляющая из файла все комментарии и лишние пробелы между словами, оставив только один пробел
Разработать программу, Удаляющий из файла все комментарии и лишние пробелы между словами, оставив только один пробел.(обработка текстовых...

Написать программу, которая считывает текст из файла и записывает в другой файл
Написать программу, которая считывает текст из файла и записывает в другой файл все слова, встречающиеся в тексте несколько раз.

Программа , вводит с клавы строку и удаляет лишние пробелы
1)Програма которая вводит с клавиатуры строку и находит длину самого короткого слова(слова-группа символов разделеные пробелами) 2)...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru