Светлана Цинк
Светлана Цинк

VC++: parser и string

#include "stdafx.h"
#include
#include
using namespace std;

string Entering;

int Entering1(){
char s = System::Convert::ToChar(Entering);
return s;}

float number()
{
int res = 0;
for (;;)
{
char c = cin.get();
if (c >= '0' && c <= '9')
res = res * 10 + c - '0';
else
{
cin.putback(c);
return res;
}
}
}

float expr();

float skobki()
{
char c = cin.get();
if (c == '(')
{
float x = expr();
cin.get();
return x;
}
else
{
cin.putback(c);
return number();
}
}

float factor()
{
float x = skobki();
for (;;)
{
char c = cin.get();
switch (c)
{
case '*':
x *= skobki();
break;
case '/':
x /= skobki();
break;
default:
cin.putback(c);
return x;
}
}
}

float expr()
{
float x = factor();
for (;;)
{
char c = cin.get();
switch (c)
{
case '+':
x += factor();
break;
case '-':
x -= factor();
break;
default:
cin.putback(c);
return x;
}
}
}

float Solvation ( string Entering, float Number )
{
Entering1 ();
Number = expr();
return Number ;
}

Это часть кода, другая часть копирует данные из textbox и добавляет в string Entering, а теперь мне нужно, чтоб парсер символы из стринга считывал. Перепробывал все, мне знакомые варианты (но я новичок, и почти ничего не знаю, хотя этот код я более менее понимаю, хотя и путаюсь от функции к функции) , не получилось. Так как это самый понятный парсер, из всех найденных мною в интернете (нашел около 3ёх работающих) , хотелось бы его и оставить.

А теперь суть, как можно сделать так, чтобы символы считывались из стринга? Желательно с пояснениями, и готовностью удержать глаза от похода на лоб, по причине возможного вопроса с моей стороны) ) так как сам я новичок.

П. С. Впринципе можно и другой парсер, но с пояснениями, что называется для тупых))

Точка входа float solvation ( string Entering, float Number ).

Функция Ентеринг1, это отделенная область манипуляций со стрингом, в последний раз пытался практически прошибить стену, стринг в чар конвертировать.

Что такое Стек? Если это отступы, то онипросто не скопировались.

Анжелика Качалина
Анжелика Качалина

Пока первый вопрос.
Где точка входа в программу?
Вопрос два. Что делает эта функция:
int Entering1(){
char s = System::Convert::ToChar(Entering);
return s;}
Функция должна возвращать int, а стоит return s. Она возвращает код сивола?
И дальше можно уже код не смотреть.
И вообще на будущее. Если делаешь разбор арифметического выражения, то используй для этих целей стек. А так все очень плохо.

Похожие вопросы
С++. Как из String можно сделать Strings ?
DWORD в System::String^ или std::string в System::String^ (Visual C++)
string может быть двумрным ?(c++)
string c++. Задаю переменную а типа string. Что храниться в переменной а? массив char? если да, то какой размер string a;
Чем можно заменить оператор string?
Жуткая проблема с VC++
String. Подскажите как можно отсортировать переменную типа string по возрастанию, в С++?
Сложение char к string С++
C# поиск внтури string
преобразование real в string