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

Чтение из файла и удаление всех пробелов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
xobotyi
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3
15.06.2012, 23:08     Чтение из файла и удаление всех пробелов #1
Добрый вечер ув. форумчане
Собственно суть в том чтобы открыть файл, считать оттуда все что есть и удалить все пробелы и переносы строк, с пробелами проблем нету, но если присутствуют переносы строк появляется какая-то хрень в конце чара.
скрин во вложении

код:
Strusture.cpp
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "stdafx.h"
 
using namespace std;
 
string fileName, mass;
char * buff;
int length;
 
std::string del_sp_num(const std::string &in_str)
{
    std::string str(in_str);
    for (std::string::iterator it = str.begin() ; it<str.end(); ++it ){
        if (*it == ' ' || *it == '\n') str.erase(it);
    }
    return str;
}
 
int main(int argc, char* argv[])
    {
        setlocale(LC_ALL, "rus");
        //ввод имени файла
        cout << "Введите имя открываемого файла: ";
        cin >> fileName;
        //инициализация объекта файла
        ifstream file;
        file.open(fileName, ios_base::in);
        
        if(!file.is_open())
        {
            cout << "\nОшибка открыйтия или создания файла!\n";
        }
 
        if(file.is_open())
        {
            file.seekg (0, ios::end);
            length = file.tellg();
            file.seekg (0, ios::beg);
 
            buff = new char [length];
 
            file.read(buff, length);
            file.close(); //закрытие файла
 
            cout << "Количество символов в файле: " << length << "\n\nСодержание файла как есть:\n";
            cout.write (buff,length);
 
            mass.assign(buff, length);
            cout << "\n\nСодержание файла без пробелов:\n" << del_sp_num(mass);
 
        }
        cout << "\n";
        system("pause");
        return 0;
    }
stdafx.h
C++
1
2
3
4
5
6
7
8
9
10
11
#pragma once
 
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <fstream>
#include <string>
#include <iostream>
#include <fstream>
Подскажите пожалуйста, как избавиться от лишних символов?
Миниатюры
Чтение из файла и удаление всех пробелов  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
16.06.2012, 01:50     Чтение из файла и удаление всех пробелов #2
Ну я сделал проще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
using namespace std;
int main()
{
    string s;
    ifstream F("1.txt");
    while(!F.eof())
    {
        char ch;
        F>>ch;
        s+=ch;
    }
    s.erase(s.length()-1,1);
    cout<<s<<endl;
    getch();
    return 0;
}
Содержимое файла:
My name is Vasya. f1234! 44.
The man was in London.
34 12! 123 3 2 1.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.06.2012, 01:59     Чтение из файла и удаление всех пробелов #3
Цитата Сообщение от Andrey.K Посмотреть сообщение
Ну я сделал проще:
проще так
C++
1
2
3
4
std::ifstream in("1.txt"); 
std::string s, t;
while (in >> t)
    s += t;
а не посимвольно
xobotyi
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3
17.06.2012, 14:40  [ТС]     Чтение из файла и удаление всех пробелов #4
Цитата Сообщение от Jupiter Посмотреть сообщение
проще так
C++
1
2
3
4
std::ifstream in("1.txt"); 
std::string s, t;
while (in >> t)
    s += t;
а не посимвольно
все супер, спасибо, только вот он без пробелов и переносов строк вытаскивает информацию, а мне нужно с ними...
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.06.2012, 17:07     Чтение из файла и удаление всех пробелов #5
Цитата Сообщение от xobotyi Посмотреть сообщение
только вот он без пробелов и переносов строк вытаскивает информацию, а мне нужно с ними...
Цитата Сообщение от xobotyi Посмотреть сообщение
считать оттуда все что есть и удалить все пробелы и переносы строк
определитесь как-то
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
17.06.2012, 17:35     Чтение из файла и удаление всех пробелов #6
а если так
C++
1
2
3
4
5
    std::ifstream ifs("1.txt");
    std::string s;
    std::copy(std::istream_iterator<char>(ifs),std::istream_iterator<char>(),std::back_inserter(s));
 
    std::cout << s;
xobotyi
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3
17.06.2012, 19:29  [ТС]     Чтение из файла и удаление всех пробелов #7
Цитата Сообщение от Jupiter Посмотреть сообщение
определитесь как-то
и то и то нужно удалять пробелы и переносы нужно в последствии, а из файла читать ровно как есть,про это я как-то забыл написать
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.06.2012, 19:45     Чтение из файла и удаление всех пробелов #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
39
40
41
42
43
#include <algorithm>
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
 
struct eat_white_space_and_join {
    
    std::string& res;
 
    eat_white_space_and_join(std::string & s) : res(s)
    {}
 
    void operator () (std::string const& s)
    {
        std::stringstream ss(s);
        std::string tmp;
 
        while (ss >> tmp)
            res += tmp;
    }
};
 
int main()
{
    std::ifstream in("1.txt"); 
    std::string tmp, result;
    std::vector<std::string> vec;
 
    if (in.is_open())
    {
        //read all lines
        while (std::getline(in, tmp))
            vec.push_back(tmp);
 
        //eat all white spaces and join lines
        std::for_each(vec.begin(), vec.end(), eat_white_space_and_join(result));
        std::cout << result << std::endl;
    }
 
    return 0;
}
yleart
 Аватар для yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
17.06.2012, 21:50     Чтение из файла и удаление всех пробелов #9
Jupiter, не могли бы вы объяснить 12 строчку :
C++
1
eat_white_space_and_join(std::string & s) : res(s)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2012, 22:02     Чтение из файла и удаление всех пробелов
Еще ссылки по теме:

Удаление пробелов C++
C++ Ввод строки, определение ее длины, и удаление в ней всех пробелов
C++ Чтение из файла(игнорирование пробелов)

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.06.2012, 22:02     Чтение из файла и удаление всех пробелов #10
конструктор с одним параметром - ссылкой на std::string, далее двоеточие и список инициализации полей
Yandex
Объявления
17.06.2012, 22:02     Чтение из файла и удаление всех пробелов
Ответ Создать тему
Опции темы

Текущее время: 04:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru