我正在使用SDL中的一个函数,其中一个参数是类型的const GLchar* const*,所以为了调用它,我需要传入一个C字符串的引用,如下所示:
const char *str = "test";
glShaderSource(... , &str, ...);
Run Code Online (Sandbox Code Playgroud)
但是,我有一个std::string我想要传入的内容,并且做这样的事情会产生错误:
std::string str = "test";
glShaderSource(... , &str.c_str(), ...);
Run Code Online (Sandbox Code Playgroud)
我知道我可以简单地创建一个新const char*变量并将其保存为std::string:
const char *cstr = str.c_str();
Run Code Online (Sandbox Code Playgroud)
但有什么方法可以解决这个问题吗?我不喜欢制作一个新的变量.我尝试使用lambda但是没有用.
我想将一个参数传递给一个函数,它接受一个const char**
#include<iostream>
using namespace std;
void testFunc(const char **test){}
string testString = "This is a test string";
int main()
{
const char *tempC = testString.c_str();
testFunc(&tempC);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常,但我不想通过临时变量tempC.我想直接传递testString.c_str().如下,
int main()
{
testFunc(&testString.c_str());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,它显示错误,
error C2102: '&' requires l-value
Run Code Online (Sandbox Code Playgroud)
是否可以在不使用temp变量的情况下完成.