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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
florgas
 Аватар для florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 339
27.08.2013, 18:55     String, который не дружит с пробелами #1
Добрый день. Имеется несколько вопросов: во-первых, почему в примере адреса выводятся только по одному слешу, тогда как я указал два? Во-вторых, тот код, что приведен ниже никак не дружит с проблема, а в них есть необходимость. Почему, когда я введу адрес с проблемами, я получаю сообщение о том, что я указал адрес до пробелов, а затем очищается экран, открывается 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();
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2013, 19:19     String, который не дружит с пробелами #21
Цитата Сообщение от Hugra Посмотреть сообщение
или
Тогда уж так:
C++
1
2
cin.clear();
while(cin.get() != '\n');
Добавлено через 30 секунд
Цитата Сообщение от florgas Посмотреть сообщение
Идет примерно такой код:
C++
1
(cin >> vib).get();
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
florgas
 Аватар для florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 339
27.08.2013, 19:21  [ТС]     String, который не дружит с пробелами #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();
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2013, 19:24     String, который не дружит с пробелами #23
Цитата Сообщение от florgas Посмотреть сообщение
Не помогает. Результата 0, вот вот это помогло!
Как это не помогает? Вы что там такое вводите?
florgas
 Аватар для florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 339
27.08.2013, 19:28  [ТС]     String, который не дружит с пробелами #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;
Чтобы было два \\ надо поставить четыре. Это тоже понятно.

Появился еще вопрос: как можно определить, запущен ли процесс с определенным именем?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2013, 19:29     String, который не дружит с пробелами #25
Цитата Сообщение от florgas Посмотреть сообщение
Вот так сделал и не помогло...
Вопрос остался:
Цитата Сообщение от alsav22 Посмотреть сообщение
Вы что там такое вводите?
Переменная vib какого типа?
florgas
 Аватар для florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 339
27.08.2013, 19:31  [ТС]     String, который не дружит с пробелами #26
Цитата Сообщение от alsav22 Посмотреть сообщение
Вопрос остался:
Переменная vib какого типа?
int vib;
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2013, 19:41     String, который не дружит с пробелами #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, который не дружит с пробелами  
florgas
 Аватар для florgas
5 / 4 / 0
Регистрация: 28.09.2010
Сообщений: 339
27.08.2013, 20:09  [ТС]     String, который не дружит с пробелами #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 и тем самым появляется основное меню. Что в это плохого?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2013, 20:24     String, который не дружит с пробелами
Еще ссылки по теме:

Разработать класс String, который в дальнейшем будет использоваться для работы со строками C++
C++ Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего
C++ Какое одинаковое значение можно вернуть из функций <string> f () и vector < <string> > f()?

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2013, 20:24     String, который не дружит с пробелами #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;
}
Yandex
Объявления
27.08.2013, 20:24     String, который не дружит с пробелами
Ответ Создать тему
Опции темы

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