Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/26: Рейтинг темы: голосов - 26, средняя оценка - 4.77
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
1

String, который не дружит с пробелами

27.08.2013, 18:55. Показов 4984. Ответов 28
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Имеется несколько вопросов: во-первых, почему в примере адреса выводятся только по одному слешу, тогда как я указал два? Во-вторых, тот код, что приведен ниже никак не дружит с проблема, а в них есть необходимость. Почему, когда я введу адрес с проблемами, я получаю сообщение о том, что я указал адрес до пробелов, а затем очищается экран, открывается main-функция и начинаются попытки что-то вывести. В функции-main у меня необходимо выбрать номер пункта, а у меня постоянно пишет "неверный пункт меню". При все при этом, каждые 3 секунды экран очищается и снова появляется основное меню и сообщение "неверный пункт меню".
Как подружить код ниже с пробелами? Спасибо.
C++
1
2
3
4
5
6
7
cout << "\nУкажите путь до файла samp.exe.\n";
cout << "Пример адреса: D:\\Program Files (x86)\\GTA San Andreas\\samp.exe\n";
cout << "Введите адрес: ";  
cin >> locationSamp;
cout << "\nВы указали адрес " << locationSamp;
Sleep(3000);
system("cls"), main();
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.08.2013, 18:55
Ответы с готовыми решениями:

чтение с пробелами String
Здравствуйте! Не давно только перешел с C++ на Java. Есть такая задача, может Вы ее уже...

Сравнение string с пробелами в С#
Как сравнить две строки типа string? Например, есть строка &quot;123456&quot; и строка &quot;123456 &quot;. Нужно...

Простой ввод строки с пробелами через string
Visual studio 2012, никак не могу ввести строку через string. У меня не работает вот этот фрагмент...

Записать строку с пробелами в string, с помощью потока.
Здравствуйте. Можно ли с помощью потока ввода записать строку с пробелами в тип string. Если да, то...

28
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2013, 19:19 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Hugra Посмотреть сообщение
или
Тогда уж так:
C++
1
2
cin.clear();
while(cin.get() != '\n');
Добавлено через 30 секунд
Цитата Сообщение от florgas Посмотреть сообщение
Идет примерно такой код:
C++
1
(cin >> vib).get();
1
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
27.08.2013, 19:21  [ТС] 22
Ω
Цитата Сообщение от Hugra Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
cout << "Ваш выбор: ";
    (cin >> vib).get();
    switch (vib)
    {
        case 1: changeServer();
            break;  
        case 2: editTimer();
            break;
        case 3: changePassword();
            break;
        case 4: changeLocationSamp();
            break;
        case 0: system("cls"), main();
            break;
Не помогает. Результата 0, вот вот это помогло!
Цитата Сообщение от Hugra Посмотреть сообщение
или
C++
1
2
3
4
5
6
7
8
9
cout << "\nУкажите путь до файла samp.exe.\n";
cout << "Пример адреса: D:\\Program Files (x86)\\GTA San Andreas\\samp.exe\n";
cout << "Введите адрес: ";  
while(cin && cin.get()!= '\n')
continue;
getline(cin,locationSamp);
cout << "\nВы указали адрес " << locationSamp;
Sleep(3000);
system("cls"); main();
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2013, 19:24 23
Цитата Сообщение от florgas Посмотреть сообщение
Не помогает. Результата 0, вот вот это помогло!
Как это не помогает? Вы что там такое вводите?
0
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
27.08.2013, 19:28  [ТС] 24
Вот так сделал и не помогло... Но помог вариант Hugra.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
cout << "Ваш выбор: ";
    (cin >> vib).get();
    switch (vib)
    {
        case 1: changeServer();
            break;  
        case 2: editTimer();
            break;
        case 3: changePassword();
            break;
        case 4: changeLocationSamp();
            break;
        case 0: system("cls"), main();
            break;
Чтобы было два \\ надо поставить четыре. Это тоже понятно.

Появился еще вопрос: как можно определить, запущен ли процесс с определенным именем?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2013, 19:29 25
Цитата Сообщение от florgas Посмотреть сообщение
Вот так сделал и не помогло...
Вопрос остался:
Цитата Сообщение от alsav22 Посмотреть сообщение
Вы что там такое вводите?
Переменная vib какого типа?
0
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
27.08.2013, 19:31  [ТС] 26
Цитата Сообщение от alsav22 Посмотреть сообщение
Вопрос остался:
Переменная vib какого типа?
int vib;
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2013, 19:41 27
Вот код и результат работы:
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 <iostream>
#include <string>
using namespace std;
 
string locationSamp;
 
void changeLocationSamp()
{
    cout << "\nУкажите путь до файла samp.exe.\n";
    cout << "Пример адреса: D:\\Program Files (x86)\\GTA San Andreas\\samp.exe\n";
    cout << "Введите адрес: ";  
    getline(cin, locationSamp);
    cout << "\nВы указали адрес " << locationSamp << endl;
    system("pause"); 
    //Sleep(3000);
    system("cls");
}
 
 
int main()
{
    setlocale(0, "");
    
    int vib;
    cout << "Ваш выбор: ";
    (cin >> vib).get();
    switch (vib)
    {
        case 1: //changeServer();
            break;  
        case 2: //editTimer();
            break;
        case 3: //changePassword();
            break;
        case 4: changeLocationSamp();
            break;
        case 0: system("cls");
            break;
    }
 
    system("pause");
    return 0;
}
И уберите из кода вызовы main(), так не делают.
Миниатюры
String, который не дружит с пробелами  
0
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
27.08.2013, 20:09  [ТС] 28
Цитата Сообщение от alsav22 Посмотреть сообщение
Вот код и результат работы:
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 <iostream>
#include <string>
using namespace std;
 
string locationSamp;
 
void changeLocationSamp()
{
    cout << "\nУкажите путь до файла samp.exe.\n";
    cout << "Пример адреса: D:\\Program Files (x86)\\GTA San Andreas\\samp.exe\n";
    cout << "Введите адрес: ";  
    getline(cin, locationSamp);
    cout << "\nВы указали адрес " << locationSamp << endl;
    system("pause"); 
    //Sleep(3000);
    system("cls");
}
 
 
int main()
{
    setlocale(0, "");
    
    int vib;
    cout << "Ваш выбор: ";
    (cin >> vib).get();
    switch (vib)
    {
        case 1: //changeServer();
            break;  
        case 2: //editTimer();
            break;
        case 3: //changePassword();
            break;
        case 4: changeLocationSamp();
            break;
        case 0: system("cls");
            break;
    }
 
    system("pause");
    return 0;
}
И уберите из кода вызовы main(), так не делают.
Что плохого в вызове main? У меня main - это основная функция, в которой содержится меню. Человек меняет адрес до файла, затем экран очищается, вызывается main и тем самым появляется основное меню. Что в это плохого?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2013, 20:24 29
Цитата Сообщение от florgas Посмотреть сообщение
У меня main - это основная функция, в которой содержится меню.
main() у всех основная функция, не только у вас.
Цитата Сообщение от florgas Посмотреть сообщение
Что плохого в вызове main?
Вы отдельную тему создайте и узнаете.
Цитата Сообщение от florgas Посмотреть сообщение
Человек меняет адрес до файла, затем экран очищается, вызывается main и тем самым появляется основное меню.
Всё это можно сделать без вызова main().

Добавлено через 5 минут
Например, так:
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
#include <iostream>
#include <string>
using namespace std;
 
string locationSamp;
 
void changeLocationSamp()
{
    cout << "\nУкажите путь до файла samp.exe.\n";
    cout << "Пример адреса: D:\\Program Files (x86)\\GTA San Andreas\\samp.exe\n";
    cout << "Введите адрес: ";  
    getline(cin, locationSamp);
    cout << "\nВы указали адрес " << locationSamp << endl;
    system("pause"); 
    //Sleep(3000);
    system("cls");
}
 
 
int main()
{
    setlocale(0, "");
    
    int vib;
    char ch;
    do
    {
        cout << "Ваш выбор: ";
        (cin >> vib).get();
        switch (vib)
        {
            case 1: //changeServer();
                break;  
            case 2: //editTimer();
                break;
            case 3: //changePassword();
                break;
            case 4: changeLocationSamp();
                break;
            case 0: system("cls");
                break;
        }
        cout << "Продолжить? (y/n) :";
        (cin >> ch).get();
    }
    while (ch != 'n');
 
    system("pause");
    return 0;
}
0
27.08.2013, 20:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2013, 20:24
Помогаю со студенческими работами здесь

Фейл. Вывод string (getline) с пробелами. ООП
В простом варианте всё путём, но в готовом решении не пойми что. Понять, почему строка...

Как на C++ ввести с консоли строку с пробелами в тип string?
Нужно создать программу определяющую является ли строка палиндромом(т.е. одинаково пишется как...

В заданной строке заменить каждый пробел двумя пробелами используя string
В заданной строке заменить каждый пробел двумя пробелами используя string.

Есть ли метод, который вывод число с пробелами после 3-ех чисел?
Есть ли метод, который вывод число с пробелами после 3-ех чисел? Например чтобы выводилось число...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru