Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 15.01.2017
Сообщений: 25

Удалить пробелы в начале и конце строки

03.03.2017, 23:06. Показов 5577. Ответов 6

Студворк — интернет-сервис помощи студентам
Удалить группу пробелов, с которых, возможно начинается и заканчивается строка
строки читаются из файла и выводятся в файл
Разрешено пользоваться только библиотекой STRING
учесть, что строка может как содержать, так и не содержать пробелы, также может быть пустой
помогите пожалуйста, срочно нужно(
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.03.2017, 23:06
Ответы с готовыми решениями:

Функция удаляющая пробелы в начале и в конце строки
Разработайте функцию std::string TrimBlanks(std::string const& str), выполняющую отрезание пробелов в начале и в конце строки str, и...

Во введенной пользователем строке удалите все пробелы в начале и конце строки
Во введенной пользователем строке удалите все пробелы в начале и конце строки. Я ищу первый индекс символа не равного пробелу и с конца...

Отрезание пробелов в начале и в конце строки
Разработайте функцию std::string Trims(std::string const& str), выполняющую отрезание пробелов в начале и в конце строки str, и...

6
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
04.03.2017, 03:25
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
#include <iostream>
#include <string>
#include <fstream>
 
std::string trimmed(const std::string& str)
{
    if (str.size() == 0)
        return str;
    if (str[0] != ' ' && str[str.size() - 1] != ' ')
        return str;
    
    int start = 0;
    int end = str.size() - 1;
    
    while (start <= end && str[start] == ' ')
        start++;
 
    if (start <= end) 
    {                          
        while (end && str[end] == ' ')          
            end--;
    }
    int len = end - start + 1;
    
    return str.substr(start, len);
}
 
int main()
{
    std::ifstream fin("input.txt");
    if (!fin)
    {
        std::cout << "Error opening file!" << std::endl;
        std::cin.get();
        return 0;
    }
    
    std::ofstream fout("output.txt");
    std::string str;
    while (std::getline(fin, str))
        fout << trimmed(str) << std::endl;
    
    fin.close();
    fout.close();
}
0
 Аватар для LVV
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
04.03.2017, 07:24
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
string trimmed(string);
 
int main()
{
setlocale(0,"");
ifstream fin ("input.txt");
    if (!fin)
            cout << "Файл не найден";
    else
    {
        string str;
        ofstream fout ("output.txt");
 
        while (getline (fin,str))
        {
            fout << trimmed(str) << endl;
        }
    cout << "Пробелы удалены" << endl;
    }
 
 
    system ("pause");
return 0;
}
 
 
string trimmed(string str)
{
int i, j;
    for(i=0; str[i]==' '; i++);
    for(j=str.length()-1;  str[j]==' '; j--);
 
string s="";
    for (int z=i; z<=j; z++)
        s=s+str[z];
    return s;
}
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
04.03.2017, 16:12
LVV, пустые строки не обрабатывает.
Цитата Сообщение от aggressive_mind Посмотреть сообщение
строка .... может быть пустой
Строки, в которых только пробелы, не обрабатывает.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
04.03.2017, 16:45
aggressive_mind,
C++
1
2
3
4
5
6
#include <regex>
 
std::string trimmed(const std::string& str)
{
    return std::regex_replace(str, std::regex("^[ ]*(.*?)[ ]*$"), "$1");
}
0
 Аватар для LVV
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
05.03.2017, 11:56
Цитата Сообщение от nd2 Посмотреть сообщение
Строки, в которых только пробелы, не обрабатывает.
Да. Не учел.
Ну, тогда так:
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
string trimmed(string);
 
int main()
{
setlocale(0,"");
ifstream fin ("1.txt");
    if (!fin)
            cout << "Файл не найден";
    else
    {
        string str;
        ofstream fout ("output.txt");
 
        while (getline (fin,str))
        {
            fout << trimmed(str) << endl;
        }
    cout << "Пробелы удалены" << endl;
    }
 
    system ("pause");
return 0;
}
 
 
string trimmed(string str)
{
int i, j;
    for(i=0; i<str.length() && str[i]==' '; i++);
    for(j=str.length()-1;  j>=0 && str[j]==' '; j--);
 
string s="";
    for (int z=i; z<=j; z++)
        s=s+str[z];
    return s;
}
вместо пробельной строки выводит пустую строку
0
0 / 0 / 0
Регистрация: 15.01.2017
Сообщений: 25
02.04.2017, 21:47  [ТС]
написана программа ,удаляющая пробелы в начале и конце строки, нужно преобразовать функцию trimmed так, что бы получилось подобно представленному
C++
1
2
3
4
5
6
7
8
9
10
char *p=s1; int pos;
while(...)
{ 
pos=strcspr(p, ' ');
p+=pos ;
pos=strcspr(p, ' ');
 if pos==0)
break;
}
p+=pos
сама программа

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
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
string trimmed(string);
string trimmed(const string &str)
{
    size_t i, j;
    i = str.find_first_not_of(' ');
    if (i == string::npos) return string();
    j = str.find_last_not_of(' ');
 
    return str.substr(i, j - i + 1);
}
 
int main()
{
    setlocale(0, "");
    ifstream fin("1.txt");
    if (!fin)
        cout << "Файл не найден";
    else
    {
        string str;
        ofstream fout("output.txt");
 
        while (getline(fin, str))
        {
 
            fout << trimmed(str) << endl;
            cout << trimmed(str) << endl;
        }
 
 
 
        cout << "Пробелы удалены" << endl;
    }
 
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2017, 21:47
Помогаю со студенческими работами здесь

Лишние пробелы в начале строки
void prog(FILE *input,FILE *output) { char s; char p; while(fgets(s,256,input)!=NULL) { for(int j=0;j&lt;strlen(s);j++) ...

Переписать все строки файла удаляя пробелы в конце каждой строки
Дан текстовый файл F.txt. Переписать все строки файла F.txt в файл G.txt, удаляя все пробелы в конце каждой строки файла-источника.

Удаление лишних пробелов в начале и конце строки.
Нужно написать функцию char*alltrim(char*string) для удаления пробелов в начале и конце строки с помощью указателей. Помогите завершить...

Удалить в текстовом документе пробелы и символы табуляции в конце строк
Здравствуйте, ребята. Мне нужна на завтра написать программу, а иначе будут проблемы в университете. Будет очень обидно если из-за одной...

Убрать пробелы в конце строки
Условие : Опишите функцию, удаляющую в строке все начальные и все конечные пробелы. Все начальные пробелы убрать у меня получилось. А как...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru