Go Back   Forums > Community Chatterbox > Tech Corner > Programming
Memberlist Forum Rules Today's Posts
Search Forums:
Click here to use Advanced Search

Reply
 
Thread Tools Display Modes
Old 11-10-2008, 09:16 AM   #31
Data
retired
 
Data's Avatar


 
Join Date: Jun 2004
Location: Jan Mayen, Svalbard and Jan Mayen
Posts: 2,167
Default

Quote:
Originally Posted by Japofran View Post

As a matter of fact using an overloaded assignment operator with a string is not a C-ism at all... Actually the robust C code to clear a string or check if it's not empty is very brief and immediately recognizable:

Code:
*templine = '\0';
Code:
while ( *templine != '\0' );
(Actually I could write just 0 instead of '\0', couldn't I? Hm better safe than sorry.) Of course templine would here be a C string (pointer to char), not a string object. I can't do this stuff with objects and I'm not supposed to, their innards are "private".
You are totally right about the fact that using the overloaded operators is very C++ like and not C like, however for a starting programmer (for those I posted this very simple piece of code), it can be confusing and might lead to bad practices with other objects.
Maybe i should use string.append instead of the += as well.... but it doesn't make the code look more beautiful in my opinion. In my code not intended for newbies you will find lot's of classes in which I overloaded the operators in order to keep their usage intuitive. (So you don't need to learn an interface before you can use it)


You could use 0 instead of '\0' I always use 0., but this comes mainly from the fact that
in C++ NULL and 0 are the same, so I can stick with one type of 0 for everything.

I could ramble on about objects and stuff and as well, but that has fairly little to do with the solved problem.

Thank you for your discussion so far. I really appreciate it.
__________________
Flowing with the stream of life
Data is offline                         Send a private message to Data
Reply With Quote
Old 11-10-2008, 12:54 PM   #32
Playbahnosh
The Peacemaker
 
Playbahnosh's Avatar


 
Join Date: Apr 2005
Location: Veszprem, Hungary
Posts: 353
Send a message via MSN to Playbahnosh
Default

I gotta get a C book... I feel left out...
__________________
The Master of Light and Darkness

"Don't fight the bad things in life! Find the good one! They are everywhere! Don't spend your life fighting for goals you can never reach! Live for the moment!"


BEWARE: I'm using the forums as a personal blog!
Playbahnosh is offline                         Send a private message to Playbahnosh
Reply With Quote
Old 12-10-2008, 09:40 AM   #33
Data
retired
 
Data's Avatar


 
Join Date: Jun 2004
Location: Jan Mayen, Svalbard and Jan Mayen
Posts: 2,167
Default

sorry play.
__________________
Flowing with the stream of life
Data is offline                         Send a private message to Data
Reply With Quote
Old 12-10-2008, 10:45 AM   #34
Japo
Autonomous human
 
Japo's Avatar


 
Join Date: Mar 2006
Location: ,
Posts: 4,613
Default

Quote:
Originally Posted by Playbahnosh View Post
I gotta get a C book... I feel left out...
Sorry. I guess there's no point in splitting this topic in two now that one of them would be solved... :P

There are dozens of free tutorials, even whole books (tutorials are better to start).

This kind of code isn't difficult so you should get the hang of it after a while. The only special thing here is that instead of taking the trouble to call specific functions to handle files, Data took advantage of the fact that C/C++ handles files and input/output devices in the same way, as "streams". However once opened files would have been interfaced with the same kind of code. The "<" in the command line call told the OS to use one file as standard input stream, instead of the keyboard by default, and the ">" to use another file as standard output stream, instead of the console. So if you for example used the former but not the latter, you should get the intended result, but printed on the screen instead of saved to a file.

Other than that, this code is a good example for beginners wanting to start to learn input/output.

BTW Data, there was another reason to use string.empty() and .clear() instead of == and =, the same reason why they exist at all, since you've shown that you wouldn't need the former if you used the latter instead. Not that the code would be more robust, but that it would be more efficient. I know that's not an issue here, but it's good not to let that get out of sight as a good practice, so that it will come naturally when it be important. I haven't looked inside the string object source code, but I'd bet the implementations of .empty() and .clear() are similar to what I typed, and will likely be inline functions; whereas the overloaded == and = will call functions devised to operate with whole strings so they will include a loop (even when it doesn't iterate more than once).
__________________
Life starts every day anew. Prospects not so good...
Japo is offline                         Send a private message to Japo
Reply With Quote
Old 12-10-2008, 01:32 PM   #35
Data
retired
 
Data's Avatar


 
Join Date: Jun 2004
Location: Jan Mayen, Svalbard and Jan Mayen
Posts: 2,167
Default

Japofran,
Yes you are right. empty and clear operations are most likely to be more efficient.
__________________
Flowing with the stream of life
Data is offline                         Send a private message to Data
Reply With Quote
Reply


Similar Threads
Thread Thread Starter Forum Replies Last Post
Castlevania movie script revealed TheChosen Blah, blah, blah... 16 18-07-2008 06:41 PM
Abandonia Script? jourdan Old Suggestions 4 09-07-2007 09:24 AM
Script Not Working After Migrate Reup Old Suggestions 1 25-08-2006 11:58 AM
Annoying Script Prompt -RESOLVED guesst Old Suggestions 7 28-07-2006 01:00 AM


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump
 


The current time is 11:39 PM (GMT)

 
Powered by vBulletin® Version 3.7.1
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.