Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7685703
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 31, 20262026-05-31T19:18:44+00:00 2026-05-31T19:18:44+00:00

For reasons beyond my control, I need to return const char* from a function,

  • 0

For reasons beyond my control, I need to return const char* from a function, but I don’t know what the chars need to be at compile time. My solution is something like the following:

const char* __str__() {
  static std::string String;
  String = [some fancy stuff];
  return String.c_str();
}

The static prevents the string’s destruction on exiting the function, but it also means that the memory sticks around until my program exits (right?). Because the returned string can occasionally be huge (GBs), this can be a real problem.

I usually avoid pointers at all costs and only ever use static for class members, so I’m not 100% sure what I’m doing. Is this guaranteed to work? Is there a better way?

[The context of this question is printing a complicated object in python, using the __str__ method. I define the method in my c++ code, which is then wrapped by SWIG. The SWIG example shows the use of static, but it’s not clear to me that that’s the only way. I am open to suggestions.]

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-31T19:18:46+00:00Added an answer on May 31, 2026 at 7:18 pm

    As @Prætorian said, SWIG can return std::string to Python. Here’s an example from the SWIG example I think you are looking at. Also shown is a way to avoid using a reserved name in C++:

    x.i

    %module x
    
    %{
    #include "x.h"
    %}
    
    %include <windows.i>
    %include <std_string.i>
    %rename(__str__) display;
    %include "x.h"
    

    x.h

    #include <sstream>
    #include <string>
    
    class Vector
    {
    public:
        double x,y,z;
        Vector(double a,double b,double c):x(a),y(b),z(c) {}
        ~Vector() {}
    #ifdef SWIG
        %extend {
            std::string display()
            {
                std::ostringstream temp;
                temp << '[' << $self->x << ',' << $self->y << ',' << $self->z << ']';
                return temp.str();
            }
        }
    #endif
    };
    

    Output

    Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import x
    >>> v = x.Vector(1.0,2.5,3.0)
    >>> print v
    [1,2.5,3]
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

For reasons beyond my control, I need to join two tables and I need
For reasons that are beyond my control I need to store huge arrays (10000+
Are there any microscopic reasons at all (beyond superstition), to add an extra return
For reasons beyond my control, an app I am working on deploying needs to
For reasons beyond my control, I'm being tasked with Ruby web development that does
I have a column in my oracle database which due reasons beyond my control
Due to reasons beyond my control (them being a DB of another system whose
For reasons beyond my control I cannot use a real ORM, so I am
For reasons beyond my control, I am currently working on a series of flash
For reasons beyond my control I am using PHP4 to write a twitter client.

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.