×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




ouch.

Something you could try is defining the string parm in the RPG procedure definition as follows:

D Parm * value options(*STRING)

Then in the C/C++ code you can do this:

extern "C" int DoSomething(char * szParm)
{
string myStringParm = szParm;

// move on into OOP world here...

It keeps the RPG relatively simple, and the char *'s are converted to strings as early as possible. A few extra copies of the data, but in most cases the simplicity is worth it (imo).

Marc


On 2/13/2014 9:43 AM, Tim Bronski wrote:
Yes, but the statement was the attempt to create a c++ string from a
parameter passed from....an RPG program!

On 2/13/2014 6:36 PM, Marc Hunter wrote:
While I empathize, and certainly C++ also allows you to shoot yourself
in the foot, the code shown is philosophically (imo) a mix of C and C++
in that it uses char *s. Assuming both variables are strings then I
would code it as follows and avoid dipping into 'dangerous' char *
territory.

partName.insert(0, userName.substr(start, len));

(If I'm understanding the objective correctly)

Marc

On 2/13/2014 9:02 AM, Tim Bronski wrote:
On 2/13/2014 5:23 PM, Jon Paris wrote:
I would have said that C was brilliant if your aim was to shoot yourself in the foot and C++ does a better job of protecting you.
Hi Jon, I would have let that slide but I've just finished tracking down
a bug where c++ was using a different overloaded string function than
the one intended. Here's what the statement should have been:
partName.insert(0, &userName[start], len);
but instead it was
partName.insert(0, userName[start], len);

This compiles fine but the result was heinous...the c compiler would
have caught that one.


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2026 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.