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

Возвращение к предыдущему элементу - C++

Восстановить пароль Регистрация
 
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
17.09.2013, 20:45     Возвращение к предыдущему элементу #1
Есть ли функция аннологичная функции .unget() для переменных типа string ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2013, 20:45     Возвращение к предыдущему элементу
Посмотрите здесь:

C++ Возврат к предыдущему состоянию
Возвращение по ссылке C++
Возвращение значения функции C++
Map iterator обращение к предыдущему или последующему элементу C++
C++ возвращение подмассив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.09.2013, 21:09     Возвращение к предыдущему элементу #2
В смысле? Прочитать string и вернуть в поток?
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
17.09.2013, 21:19  [ТС]     Возвращение к предыдущему элементу #3
123456789 а "коретку" передвинуть на 123456789. То есть к предыдущему элементу. Я как бы иду по сторке, и нужно вернуться назад.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.09.2013, 21:21     Возвращение к предыдущему элементу #4
Цитата Сообщение от Xsenon_rus Посмотреть сообщение
Я как бы иду по сторке,
Каким методом? Код покажите.
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
17.09.2013, 21:23  [ТС]     Возвращение к предыдущему элементу #5
S = S.substr(1);

C
1
2
3
4
5
void pstep()
{
    S = S.substr(1);
 
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.09.2013, 21:25     Возвращение к предыдущему элементу #6
Цитата Сообщение от Xsenon_rus Посмотреть сообщение
S = S.substr(1);

C
1
2
3
4
5
void pstep()
{
    S = S.substr(1);
 
}
И что из этого я должен понять? Кто тут и как "идёт по строке"?
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
17.09.2013, 21:27  [ТС]     Возвращение к предыдущему элементу #7
Там просто куча функций
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
int main()
{
    ifstream fin("infile.txt"); //Объявление файла
    if (!fin) {cout << "It is file open mistake." << endl; return 1;}
    getline(fin, S); //Чтение строки из файла 
    if (pBrackets())
        {cout << "The result is true: " <<  endl;} 
    return 0; 
}
bool pBrackets()
{
    if ((S[0]=='[') || (S[0]=='+'))
        {pSquare(); return 0;}
    if ((S[0]=='(') || (S[0]=='-')) 
        {pRound();return 0;
    }
    pMist("pBrackets"); //Обработка ошибки
    return 1;
}
bool pSquare()
{
    if (S[0]=='[')
    {
        pstep(); //Переход к следующему символу строки
        pRound();
        pRound();
        if (S[0]==']') {pstep();return 0;}
        else pMist("pRound");
    }
    if (S[0] == '+') {pstep();return 0;}
    pMist("pRound");
    return 1;
}
вот часть
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
17.09.2013, 21:38  [ТС]     Возвращение к предыдущему элементу #8
substr () это берется из библиотеки string http://www.cplusplus.com/reference/s...string/substr/
Вот код полностью ( почти )

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
 
bool pBrackets(); //Скобки
bool pSquare(); //Квадратные скобки
bool pRound(); //Круглые скобки
void pstep(); //Переход к следующему символу строки
void pMist(const string& InName); //Обработка ошибки
string S;
 
int main()
{
    ifstream fin("infile.txt"); //Объявление файла
    if (!fin) {cout << "It is file open mistake." << endl; return 1;}
    getline(fin, S); //Чтение строки из файла 
    if (pBrackets())
        {cout << "The result is true: " <<  endl;} 
    return 0; 
}
bool pBrackets()
{
    if ((S[0]=='[') || (S[0]=='+'))
        {pSquare(); return 0;}
    if ((S[0]=='(') || (S[0]=='-')) 
        {pRound();return 0;
    }
    pMist("pBrackets"); //Обработка ошибки
    return 1;
}
bool pSquare()
{
    if (S[0]=='[')
    {
        pstep(); //Переход к следующему символу строки
        pRound();
        pRound();
        if (S[0]==']') {pstep();return 0;}
        else pMist("pRound");
    }
    if (S[0] == '+') {pstep();return 0;}
    pMist("pRound");
    return 1;
}
bool pRound()
{
    if (S[0]=='(')
    {
        pstep();//Переход к следующему символу строки
        pSquare(); 
        pSquare();
        if (S[0]==')') {pstep();return 0;}
        else pMist("pRound");
    }
    if (S[0]=='-') {pstep();return 0;}
    pMist("pRound");
    return 1;
}
void pstep() // Это функция прехода к след. элементу в строке string S;
{
    S = S.substr(1);
 
}
void pMist(const string& InName)
{
    cout << "Mistake is in : " << InName << " with " << "\"" << S <<"\"\n";
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2013, 21:56     Возвращение к предыдущему элементу
Еще ссылки по теме:

C++ Возвращение char[]
Возвращение значения функции C++
C++ Что быстрее? Обращение к элементу массива или к элементу структуры?

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.09.2013, 21:56     Возвращение к предыдущему элементу #9
Интересное у вас движение по строке. Это не движение, а уменьшение строки, при каждом вызове pstep(), на 1 элемент. Так и задумано? Т.е., вы уменьшили строку на первый элемент, а потом хотите его вернуть назад в строку?

Добавлено через 7 минут
Тогда сохраняйте, перед вызовом pstep(), S[0], потом, для возврата символа, складывайте сохранённый символ с обрезанной подстрокой.
Yandex
Объявления
17.09.2013, 21:56     Возвращение к предыдущему элементу
Ответ Создать тему
Опции темы

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