Allocating istringstream objects

S

Samuele Armondi

Hi everyone,
Since istringstream objects are not assignable, I'm using the following code
to allocate some dynamically. My question is: Is this the correct way of
doing it? Am I deleting all the allocated memory correctly? Or am I missing
something glaringly simple?
Thanks in advance,
S. Armondi


std::istringstream** ArgStream;
std::string* TempStrings;
try
{
ArgStream = new std::istringstream*[CurrentCommandNumArgs];
TempStrings = new std::string[CurrentCommandNumArgs];
}
catch (const std::bad_alloc& exception)
{
REPORT(exception.what());
return NULL;
}
for (int n = 0; n < CurrentCommandNumArgs; ++n)
{
std::string::size_type pos = Arguments.find_first_of(',');
TempStrings[n] = Arguments.substr(0, pos);
Arguments.erase(0, ++pos);
std::cout<< (TempStrings[n]) << '\n';
try
{
ArgStream[n] = new std::istringstream(TempStrings[n]);
}
catch (const std::bad_alloc& exception)
{
REPORT(exception.what());
return NULL;
}
}

delete[] TempStrings;

// The istringstream objects get used here

for (n = 0; n < CurrentCommandNumArgs; ++n)
delete ArgStream[n];

delete[] ArgStream;
 
S

Samuele Armondi

Victor Bazarov said:
Samuele Armondi said:
Since istringstream objects are not assignable, I'm using the following code
to allocate some dynamically. My question is: Is this the correct way of
doing it? Am I deleting all the allocated memory correctly? Or am I missing
something glaringly simple?
Thanks in advance,
S. Armondi


std::istringstream** ArgStream;
std::string* TempStrings;
try
{
ArgStream = new std::istringstream*[CurrentCommandNumArgs];
TempStrings = new std::string[CurrentCommandNumArgs];
}
catch (const std::bad_alloc& exception)
{
REPORT(exception.what());
return NULL;
}
for (int n = 0; n < CurrentCommandNumArgs; ++n)
{
std::string::size_type pos = Arguments.find_first_of(',');
TempStrings[n] = Arguments.substr(0, pos);
Arguments.erase(0, ++pos);
std::cout<< (TempStrings[n]) << '\n';
try
{
ArgStream[n] = new std::istringstream(TempStrings[n]);
}
catch (const std::bad_alloc& exception)
{
REPORT(exception.what());
return NULL;
}
}

delete[] TempStrings;

// The istringstream objects get used here

for (n = 0; n < CurrentCommandNumArgs; ++n)
delete ArgStream[n];

delete[] ArgStream;


To simplify your program you could use vector<> instead of
arrays. You wouldn't need to 'new' or 'delete[]' either
TempStrings or ArgStream...

Aside from that, seems OK.

Victor
Ok, thanks for the tips
Samuele
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,767
Messages
2,569,570
Members
45,045
Latest member
DRCM

Latest Threads

Top