Visual C++ :: Regular Expressions - How To Get Iterator
May 22, 2014
In order to parse mathematical expressions I am trying regular expressions and a recursive algorithm, but I have a problem with the four basic operations: +, -, *, /.
Trying to analyze a string like "a+(b+c)", if I use the pattern for a sum "(.+)+(.+)" the program matches it recognizing as subpatterns: "a+(b" and "c". How could I achieve the program to try also the other possibility?
I think that it would be great something like an regex_iterator which worked with regex_match instead of regex_search. I mean, an iterator that iterates over all the possible ways to match a given regular expression and a given string. This way I could loop through all these possibilities until the two subpatterns produced were correct mathematical expressions.
So I need to use boost/regex for regular expressions. someone told me that it needs to be built. the first problem is boost doesn't tell you how to build it and the second is i did sudo apt-get install libboost something. I don't remember the exact name of the package. it installed but i dont know how i would build it when its installed.
what i do with this is to stack fragments of data of type char* coming from a socket in buffer to a vector that acts as buffer, I do this since I transfer big chunks of data and the data gets fragmented by the nature of the sockets, I stack the data once its complete I retrieve the final result from the vector.
this code worked flawlessly for long time but now Im trying to port and compiler throws this error, whats the new way to assign a char array pointer to a iterator so i can stack it in the vector.
I'm trying to use the given Iterators to overload my = operator to print my list to screen. I keep getting Link2019 error though and have narrowed the problem down to my print operator. I'm wondering if it has anything to do with the fact that my operator is in private part of class? I'm new to this concept.
Code: #include "List.h" // methods for Node all //ME Node::Node( const string &s, Node * p, Node * z) : word( s ), next( p ), prev(z)//constructor { word = s; // init. word data with a copy of s next = p; // next pointer points to p
I am trying to create a NFA from a regular expression. I have a grasp on reading in the regular expression and being able to make a stack from it. The part I am struggling on is mapping the characters in the regular expression to an integer indicating the variables order in the expression. I am just not sure how to go about this.
My code so far... Code: #include<stdio.h> #include<stdlib.h> #include "stack.h" int main(void) { char expression[80];//array to store regular expression
The code works fine and prints the 4 strings. Where i m riddled is whether "ptr" in display function is a pointer or a string ? If it's a pointer then what is the type of the pointer? If it's an array, then as per my understanding, we cannot use an array name in expressions such as ptr++ (K&R).
I really do not see the difference between these two declarations:
int myvariable; int * mypointer;
It is said that when you define a pointer, instead of containing actual data, it contains a pointer to the memory location where information can be found.
But doesn't the other variable declaration do the same? It obviously doesn't have data either. And it must be stored in a memory location as well. So I do not see the difference.
I have programmed a program for billing system. I have used parameters and arrays. All the functions are working except a one function. (Regular package function).
#include <iostream> #include <fstream> #include <string> #include <ctime> using namespace std; void main(int &minutes, int &minutesd,int &minutesn) {
/* It will read in a infix expression from a text file.check if the parentheses in the input expression are balanced.convert the infix expression into a postfix expression and evaluate the expression.*/
int main() { string expression; string postfixExpression; double result; testBalanced();
1) ask the user to input a mathematical expression in the following format:
NUMBER Operator NUMBER Operator NUMBER Example: 17 + 15 - 3 Example: 2 * 3 - 4
How to output the answer of the users equation. Is there a function that includes all math operators (+,-,/,*)? Would i need to write each possible scenario using if statements?
I then overloaded the I/O operators so I could print to the screen information related Sales_data.
Code: // overload ostream in order for cout to work std::ostream& operator << (std::ostream & out, const Sales_data & cSales_data) { out << cSales_data.bookNo << ", " << cSales_data.units_sold << ", "
[Code] ....
My first issue is with overloading the addition operator. Everyone works correctly except for std::cout << item << std:endl; will no not output the ISBN number only the units_sold and revenue when added together.
After total = total + item;, I would like to print the total for this particular ISBN. However, I only get: blank, total units, total revenue where blank is where the ISBN would go but doesn't print after addition. My second question has to do with comparing the ISBN's of the books entered during the while loop. I would like to do something like
Code: if (item_i.bookNo == item_i+1.bookNo) { total = total + item; } else { std::cerr << "Books entered must have the same ISBNs" << std::endl; }
Unfortunately, I cannot figure out how to set up a comparison of the bookNos. If I used #include <casset> in the overload + rule, it will immediately exit since I have no way to compare the ISBNs.
I have the following code to calculate arithmetic expressions :
#include <iostream> using namespace std; using namespace std; const char * expressionToParse = "6.5-2.5*10/5+2*5"; char peek(){ return *expressionToParse;
[code]....
The problem is that it does not work properly with decimal numbers for example it evaluates 6-2*10/5+2*5 = 12 which is correct but for 6.5-2.5*10/5+2*5 it returns 6 instead of 11.5 .
I have an EDI file whose structure is given below. This file has multiple records, each record contains a header (e.g EDI.DD.0000000001.20130809), then contents (i.e multiple paragraphs of text) and then footer (e.g End of Report/No EDI Activity). I have to read that entire file using regular expression using three groups.
I am using following regular expression to read the file.
That expression reads the "header" and "footer" in respective groups properly but didn't pick the contents between header and footer in "contents" group.
I have changed the font of header and footer in below file to understand the format. I am using asp.net 3.5 framework.
//------------------Start of EDI File---------------------// EDI.DD.0000000001.20130809
ORIGINATOR INFORMATION Company Name: UNITED HEALTHCAR Identification: 9024125001 Originating DFI: 002100002
RECEIVER INFORMATION Receiver Name: HEALTH & WELLNESS DFI Account Number: 0000000000000001 Receiving DFI ID: 434343430 ID Number: Transaction Type: 22 Deposit
I'm making my first steps in STL, and I have a few question:
Is there a way to get an iterator to the i'th element in the collection (set or list), instead of just to the end or the begin?
And another question: Let's say I have an iterator, pointing to some element in my collection, and I use erase() (which takes as parameter an iterator that points to the soon-to-be erased element), what happens to that iterator? will it now point to NULL?
Why this code works Elenco e1; e1.add(Persona("a","b")); e1.add(Persona("c","d")); e1.add(Persona("e","f")); e1.add(Persona("e","f")); e1.remove(2); //list of 4 elements
but this not work? Elenco e1; e1.add(Persona("a","b")); e1.add(Persona("c","d")); e1.add(Persona("e","f")); e1.remove(2); //list of 3 elements
This is remove method: Persona Elenco:: remove(int pos){ list<Persona> ::iterator iter=l.begin(); for(int i=0 ;i<pos;i++){ iter++; } return *(l.erase(iter)); //erase ritorna un iterator }