Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 345
#1

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

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

Добрый день. Имеется несколько вопросов: во-первых, почему в примере адреса выводятся только по одному слешу, тогда как я указал два? Во-вторых, тот код, что приведен ниже никак не дружит с проблема, а в них есть необходимость. Почему, когда я введу адрес с проблемами, я получаю сообщение о том, что я указал адрес до пробелов, а затем очищается экран, открывается 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2013, 18:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос String, который не дружит с пробелами (C++):

Простой ввод строки с пробелами через string - C++
Visual studio 2012, никак не могу ввести строку через string. У меня не работает вот этот фрагмент кода: #include &quot;stdafx.h&quot; #include...

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

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

Работа со string, который под вектором - C++
Не могу никак понять как удалить символ из строчки, которая является элементом вектора. Честно гуглил и в русском, и в английском...

Разработать класс String, который в дальнейшем будет использоваться для работы со строками - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; using namespace std; class string_ { char *s; ...

Разработать класс String, который в дальнейшем будет использоваться для работы со строками. - C++
Всем доброго времени суток! Помогите пожалуйста т.к я не очень понимаю задание, что от меня требуется, распишите по пунктам, что мне...

28
florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 345
27.08.2013, 19:14  [ТС] #16
Цитата Сообщение от alsav22 Посмотреть сообщение
Что-то непонятно?
А это где? Недопонял немножечко.

Добавлено через 1 минуту
У меня функция вызывается через case:
C++
1
2
case 4: changeLocationSamp();
    break;
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2013, 19:15 #17
Цитата Сообщение от florgas Посмотреть сообщение
А это где?
Где-то... Как я вам покажу, если кода не вижу? Ясновидящих тут нет.

Добавлено через 49 секунд
Цитата Сообщение от florgas Посмотреть сообщение
У меня функция вызывается через case:
Перед case, наверняка, стоит cin >>. Вот там.
0
Hugra
48 / 48 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
27.08.2013, 19:15 #18
или
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();
1
florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 345
27.08.2013, 19:16  [ТС] #19
Цитата Сообщение от alsav22 Посмотреть сообщение
Где-то... Как я вам покажу, если кода не вижу? Ясновидящих тут нет.

Добавлено через 49 секунд

Перед case, наверняка, стоит cin >>. Вот там.
Идет примерно такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
cout << "Ваш выбор: ";
    cin >> vib;
    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
48 / 48 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
27.08.2013, 19:18 #20
Цитата Сообщение от florgas Посмотреть сообщение
Идет примерно такой код:
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
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2013, 19:19 #21
Цитата Сообщение от Hugra Посмотреть сообщение
или
Тогда уж так:
C++
1
2
cin.clear();
while(cin.get() != '\n');
Добавлено через 30 секунд
Цитата Сообщение от florgas Посмотреть сообщение
Идет примерно такой код:
C++
1
(cin >> vib).get();
1
florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 345
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
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2013, 19:24 #23
Цитата Сообщение от florgas Посмотреть сообщение
Не помогает. Результата 0, вот вот это помогло!
Как это не помогает? Вы что там такое вводите?
0
florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 345
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
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2013, 19:29 #25
Цитата Сообщение от florgas Посмотреть сообщение
Вот так сделал и не помогло...
Вопрос остался:
Цитата Сообщение от alsav22 Посмотреть сообщение
Вы что там такое вводите?
Переменная vib какого типа?
0
florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 345
27.08.2013, 19:31  [ТС] #26
Цитата Сообщение от alsav22 Посмотреть сообщение
Вопрос остался:
Переменная vib какого типа?
int vib;
0
alsav22
5426 / 4821 / 442
Регистрация: 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(), так не делают.
0
Миниатюры
String, который не дружит с пробелами  
florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 345
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
alsav22
5426 / 4821 / 442
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2013, 20:24
Привет! Вот еще темы с ответами:

Разработать класс String, который в дальнейшем будет использоваться для работы со строками - C++
Всем доброго времени суток! Вот задание: Разработать класс String, который в дальнейшем будет использоваться для работы со...

От класса String наследовать новый класс, который имеет проверку на превышение размера строки - C++
Доброго времени суток! Решаю задачи из учебника Роберта Лафоре ООП в C++. До этой задачи все решал сам и успешно, а тут встал в...

Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего - C++
Создайте класс employee, который содержит имя (объект класса string) и но- мер (типа long) служащего. Включите в него метод getdata(),...

Доступ к паре в map<string, vector<pair<string, string>>>Temp - C++
Подскажите пожалуйста как получить данные в векторе пар ? void showData(const map&lt;string, vector&lt;pair&lt;string, string&gt;&gt;&gt;Temp) { ...


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

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

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