sign in | join about | help | sitemap
Connecting Tech Pros Worldwide
Michael R. Copeland's Avatar

Delete Characters from char array


Question posted by: Michael R. Copeland (Guest) on November 8th, 2005 03:35 AM
What is a good way to delete 1 character (or several) from a
character array that's being processed as a "string"? Specifically, I
have something like:
char szWork[128];
....
strcpy(szWork, "-1234.5"); // populate the data
At this point, I'd like to remove the '-' that's in the 1st character
position (and this example isn't realistic), and I can't see a good way
to do this: strcpy with a char pointer that points to the 2nd character;
memmove; I don't know...
Furthermore, it might be desireable to remove more than 1 character -
and from within the string's contents. I'd want to extend the
particular problem above to do that, as well.
This seems such a common operation (editors, data conversions, etc.),
that I find it odd I can't find examples (on google, etc.) of how to do
this.
I suppose I could use std::string or some advanced "string"
processing (and I don't know what to use there, either), but that seems
pretty extreme for this.
Any thoughts? TIA...
8 Answers Posted
John Ratliff's Avatar
Guest - n/a Posts
#2: Re: Delete Characters from char array

Michael R. Copeland wrote:[color=blue]
> What is a good way to delete 1 character (or several) from a
> character array that's being processed as a "string"? Specifically, I
> have something like:
> char szWork[128];
> ...
> strcpy(szWork, "-1234.5"); // populate the data
> At this point, I'd like to remove the '-' that's in the 1st character
> position (and this example isn't realistic), and I can't see a good way
> to do this: strcpy with a char pointer that points to the 2nd character;
> memmove; I don't know...
> Furthermore, it might be desireable to remove more than 1 character -
> and from within the string's contents. I'd want to extend the
> particular problem above to do that, as well.
> This seems such a common operation (editors, data conversions, etc.),
> that I find it odd I can't find examples (on google, etc.) of how to do
> this.
> I suppose I could use std::string or some advanced "string"
> processing (and I don't know what to use there, either), but that seems
> pretty extreme for this.
> Any thoughts? TIA...[/color]

I don't think a std::string is too "extreme" for this. I think it's a
perfect demonstration of std::string as a better "C string".

I would use std::string myself.

--John Ratliff
Michael R. Copeland's Avatar
Michael R. Copeland November 8th, 2005 04:25 AM
Guest - n/a Posts
#3: Re: Delete Characters from char array

> > What is a good way to delete 1 character (or several) from a[color=blue][color=green]
> > character array that's being processed as a "string"? Specifically, I
> > have something like:
> > char szWork[128];
> > ...
> > strcpy(szWork, "-1234.5"); // populate the data
> > At this point, I'd like to remove the '-' that's in the 1st character
> > position (and this example isn't realistic), and I can't see a good way
> > to do this: strcpy with a char pointer that points to the 2nd character;
> > memmove; I don't know...
> > Furthermore, it might be desireable to remove more than 1 character -
> > and from within the string's contents. I'd want to extend the
> > particular problem above to do that, as well.
> > I suppose I could use std::string or some advanced "string"
> > processing (and I don't know what to use there, either), but that seems
> > pretty extreme for this.
> > Any thoughts? TIA...[/color]
>
> I don't think a std::string is too "extreme" for this. I think it's a
> perfect demonstration of std::string as a better "C string".
>
> I would use std::string myself.[/color]

Fair enough. How do I do it to solve the problem(s)? What methods
do I use, and how do I use them?
Ian's Avatar
Guest - n/a Posts
#4: Re: Delete Characters from char array

Michael R. Copeland wrote:[color=blue]
> What is a good way to delete 1 character (or several) from a
> character array that's being processed as a "string"? Specifically, I
> have something like:
> char szWork[128];
> ...
> strcpy(szWork, "-1234.5"); // populate the data
> At this point, I'd like to remove the '-' that's in the 1st character
> position (and this example isn't realistic), and I can't see a good way
> to do this: strcpy with a char pointer that points to the 2nd character;
> memmove; I don't know...
> Furthermore, it might be desireable to remove more than 1 character -
> and from within the string's contents. I'd want to extend the
> particular problem above to do that, as well.
> This seems such a common operation (editors, data conversions, etc.),
> that I find it odd I can't find examples (on google, etc.) of how to do
> this.
> I suppose I could use std::string or some advanced "string"
> processing (and I don't know what to use there, either), but that seems
> pretty extreme for this.
> Any thoughts? TIA...[/color]

Yes, use a std::string, it has all that you require for this.

Ian
Jon Bell's Avatar
Guest - n/a Posts
#5: Re: Delete Characters from char array

In article <MPG.1dd9d512bcf73b109896b4@news.west.cox.net>,
Michael R. Copeland <mrc2323@cox.net> wrote:
[somebody else wrote:][color=blue][color=green][color=darkred]
>> > What is a good way to delete 1 character (or several) from a
>> > character array that's being processed as a "string"? Specifically, I
>> > have something like:
>> > char szWork[128];
>> > ...
>> > strcpy(szWork, "-1234.5"); // populate the data
>> > At this point, I'd like to remove the '-' that's in the 1st character[/color]
>>
>> I would use std::string myself.[/color]
>
> Fair enough. How do I do it to solve the problem(s)? What methods
>do I use, and how do I use them?[/color]

#include <iostream>
#include <string>
using namespace std;

int main ()
{
string szWork = "-1234.5";
szWork.erase(0,1); // starting at position 0, delete 1 character
cout << szWork << endl;
return 0;
}

--
Jon Bell <jtbell@presby.edu> Presbyterian College
Dept. of Physics and Computer Science Clinton, South Carolina USA
ecky-l@web.de's Avatar
Guest - n/a Posts
#6: Re: Delete Characters from char array

> This seems such a common operation (editors, data conversions, etc.),[color=blue]
> that I find it odd I can't find examples (on google, etc.) of how to do
> this.[/color]

It's just too simple ;-). std::string can do it for you, as well as
many other things. Consult the standard library documentation.

The easy way (easy for small things, hard for more complicated), e.g.
to remove the minus sign (without substituting it by something else):

char szWork[128];
strcpy (szWork, "-1234.5");
//...
szWork++;

This just increases the position of the first character. To substitute
the first character by a '+':

*szWork = '+'; // szWork == "+1234.5"

To substitute the 2nd character by a '2':

*(szWork+1) = '2'; // szWork == "+2234.5"

And so on. But remember - std::string gives more elegant solutions and
more possibilities, especially when things get more complicated.


Eckhard

Krishanu Debnath's Avatar
Krishanu Debnath November 8th, 2005 08:05 AM
Guest - n/a Posts
#7: Re: Delete Characters from char array

Join Bytes! wrote:[color=blue][color=green]
>> This seems such a common operation (editors, data conversions, etc.),
>> that I find it odd I can't find examples (on google, etc.) of how to do
>> this.[/color]
>
> It's just too simple ;-). std::string can do it for you, as well as
> many other things. Consult the standard library documentation.
>
> The easy way (easy for small things, hard for more complicated), e.g.
> to remove the minus sign (without substituting it by something else):
>
> char szWork[128];
> strcpy (szWork, "-1234.5");
> //...
> szWork++;
>[/color]

Er. szWork is not a modifiable lvalue.

Krishanu
ecky-l@web.de's Avatar
Guest - n/a Posts
#8: Re: Delete Characters from char array

>> char szWork[128];[color=blue][color=green]
>> strcpy (szWork, "-1234.5");
>> //...
>> szWork++;[/color]
>
>Er. szWork is not a modifiable lvalue.[/color]

Ough, sorry - you're right.

It needs to be an dynamically allocated char * if it should be
manipulated:

char *szWork = new char[128];
//...
delete [] szWork;


Eckhard

John Ratliff's Avatar
Guest - n/a Posts
#9: Re: Delete Characters from char array

Join Bytes! wrote:[color=blue][color=green][color=darkred]
>>>char szWork[128];
>>>strcpy (szWork, "-1234.5");
>>>//...
>>>szWork++;[/color]
>>
>>Er. szWork is not a modifiable lvalue.[/color]
>
>
> Ough, sorry - you're right.
>
> It needs to be an dynamically allocated char * if it should be
> manipulated:
>
> char *szWork = new char[128];
> //...
> delete [] szWork;
>
>
> Eckhard
>[/color]

You could also make a char* to szWork and work off that.

char szWork[128];
char* ptr = szWork;
strcpy(szWork, "-1234.5");
// blah blah
++ptr; // *ptr == "1234.5"

--John Ratliff
 
Not the answer you were looking for? Post your question . . .
196,803 members ready to help you find a solution.
Join Bytes.com

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over 196,803 network members.
Post your question now . . .
It's fast and it's free

Popular Articles

Top Community Contributors