我改变了我的类使用std :: string(基于我在这里得到的答案,但是我有一个函数返回wchar_t*.如何将它转换为std :: string?
我试过这个:
std::string test = args.OptionArg();
Run Code Online (Sandbox Code Playgroud)
但它说错误C2440:'初始化':无法从'wchar_t*'转换为'std :: basic_string <_Elem,_Traits,_Ax>'
这适用于std :: string
std::string class::something(char* input) {
std::string s(input);
s = "hai! " + s;
return s;
}
Run Code Online (Sandbox Code Playgroud)
但是如果我用wstring尝试相同的东西就会失败
std::wstring class::something(wchar_t* input) {
std::wstring s(input);
s = "hai! " + s;
return s;
}
Run Code Online (Sandbox Code Playgroud)
我如何用std :: wstring做同样的事情?
我的应用程序首先从conf文件中读取设置,然后可以从cli参数覆盖这些选项.在从conf加载设置之后,我需要检查是否设置了require值,但是我坚持要检查变量.
示例代码:
#include <stdio.h>
int main() {
const char* test;
if (test != NULL)
std::cout << test << "\n";
else
std::cout << "no value set\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
类:
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)
我做错了什么?