我的类中的const char*在从函数返回后有垃圾字符

cod*_*rog 1 c++ visual-studio-2010 visual-c++

类:

class myclass {
  public:
    myclass(void);

    const char* server;

  private:
    char pidchar[6];
    int pidnum;

};
Run Code Online (Sandbox Code Playgroud)

功能

myclass parseINI(const char* file)
{
    myclass iniOptions;
    CSimpleIniA ini;
    ini.SetUnicode();
    ini.LoadFile(file);
    const char* server = ini.GetValue("", "server", "");
    iniOptions.server = server;
    std::cout << server << "\n"; // Prints the correct value here
    fflush(stdout);
    return iniOptions;


}
Run Code Online (Sandbox Code Playgroud)

从主函数调用它

int _tmain(int argc, TCHAR* argv[])
{

 myclass options;
 options = parseINI("myapp.ini");
 std::cout << options.server << "\n"; // It prints junk here
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

asc*_*ler 5

const char*由归国GetValue()可能属于ini对象.当您退出该parseIni()函数时,ini超出范围并被销毁,这可能意味着您的指针不再有效.

尝试使用std::stringserver成员类型来代替const char*.