相关疑难解决方法(0)

822
推荐指数
10
解决办法
35万
查看次数

C++将std :: string传递给Pointer-to-C-String参数

我正在使用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但是没有用.

c++ sdl

2
推荐指数
1
解决办法
615
查看次数

函数参数,const char**,Temp Variable

我想将一个参数传递给一个函数,它接受一个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变量的情况下完成.

c++

1
推荐指数
1
解决办法
750
查看次数

标签 统计

c++ ×2

c ×1

c++-faq ×1

declaration ×1

definition ×1

sdl ×1

terminology ×1