Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
mrzhnex
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 40
#1

Посчитать пробелы в строке

01.12.2016, 11:29. Просмотров 871. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include"Classes.h"
int main()
{
                 setlocale(LC_ALL,"russian");
    cout << "Welcome to II !\n";        
                cout << "Справка: первые 2 символа - команда,\n";
                cout << "следующие 3 - значение.\n";
                string str2;
                string str3;
  string str;               
                cin >> str;
            str3 = str.substr(0, 4);
            str2 = str.substr(4, 1000);
    if (str3 == "read")
cout << str2;
    }
Пробелы не считают , как исправить?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2016, 11:29
Ответы с готовыми решениями:

Заменить все пробелы на запятые, а запятые на точки. Посчитать количество запятых во введенной строке
Во введенной строке заменить все пробелы на запятые, а запятые на точки....

Пробелы в строке
Доброй ночи. Ребята со всем голова не работает - у меня задача Вставить в...

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

Подсчитать пробелы в строке
Как изменить данную программу, что бы она правильно подсчитывала пробелы?...

Удалить все пробелы в строке
можно ли как то с помощью метода string.replace удалить все пробелы в строке?...

6
Grank
21 / 21 / 8
Регистрация: 07.08.2015
Сообщений: 48
Завершенные тесты: 2
01.12.2016, 11:43 #2
C++
1
2
3
char str[21];
 
cin.getline(str, 20);
Пожалуйста, форматируйте код
0
mrzhnex
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 40
01.12.2016, 12:05  [ТС] #3
Если бы я хотел увидеть это:
char str[ 21 ] ;
cin. getline( str, 20 ) ;
то я бы гуглил(что я и сделал до этого)
Конкретно для своего случая есть решение , желательно без изменения кода?
0
Grank
21 / 21 / 8
Регистрация: 07.08.2015
Сообщений: 48
Завершенные тесты: 2
01.12.2016, 12:28 #4
mrzhnex, попробуйте использовать мою функцию. Она считывает строку с пробелами, пока не встретится конец строки и возвращает её в типе string.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//функция возвращает строку с пробелами
string get_string() 
{
    string str = "";
    while (true)
    {
        char ch = cin.get();
        if (ch != '\n')
            str += ch;
        else
            break;
    }
 
    return str;
}
0
mrzhnex
0 / 0 / 0
Регистрация: 16.10.2016
Сообщений: 40
01.12.2016, 12:45  [ТС] #5
Дело в том, что я использую такие функции неспроста:
C++
1
2
str3 = str.substr(0, 4);
            str2 = str.substr(4, 1000);
Я "делю" одну строчку на две:
от 0 символа до 4 и от 5 до 1000(неважно).
Не использовать str.substr я не могу, по другому никак.
0
Grank
21 / 21 / 8
Регистрация: 07.08.2015
Сообщений: 48
Завершенные тесты: 2
01.12.2016, 12:49 #6
mrzhnex, я правильно понял, что у вас проблема во вводе данных ? И при использовании cin он у вас не учитывает пробелы в строке. Если да, то можно слегка доработать ваш код следующим образом:

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 "Classes.h"
 
//функция возвращает строку с пробелами
string get_string();
 
int main()
{
    setlocale(LC_ALL, "russian");
 
    cout << "Welcome to II !\n";        
    cout << "Справка: первые 2 символа - команда,\n";
    cout << "следующие 3 - значение.\n";
 
    
    string str;  
    string str2;
    string str3;
        
    str = get_string();
    
    str3 = str.substr(0, 4);
    str2 = str.substr(4, 1000);
 
    if (str3 == "read")
        cout << str2;
}
 
string get_string() 
{
    string str = "";
    while (true)
    {
        char ch = cin.get();
        if (ch != '\n')
            str += ch;
        else
            break;
    }
 
    return str;
}
0
GbaLog-
Любитель чаепитий
3164 / 1470 / 465
Регистрация: 24.08.2014
Сообщений: 5,200
Записей в блоге: 1
Завершенные тесты: 2
01.12.2016, 13:20 #7
Лучший ответ Сообщение было отмечено mrzhnex как решение

Решение

Цитата Сообщение от mrzhnex Посмотреть сообщение
C++
1
cin >> str;
Заменить на std::getline( std::cin, str );

Добавлено через 10 минут
Цитата Сообщение от mrzhnex Посмотреть сообщение
C++
1
str.substr(4, 1000);
Кстати, чтобы считать от какого-то символа до конца строки, нужно просто указать только первый аргумент.
C++
1
str.substr(4);
1
01.12.2016, 13:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2016, 13:20

Удалить лишние пробелы в строке
удаление лишних пробелов в тексте

Убрать лишние пробелы в строке
дана строка-предложение с избыточными пробелами между словами. Преобразовать ее...

Удалить лишние пробелы в строке
Здравствуйте, не работает код по даной задачке: #include &lt;iostream&gt;...


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

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

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