返回一个 std::string,转换为 char*
Returning a std::string, converting to char*
我有一个函数,
std::string ReadShader(const std::string& filePath) {
std::ifstream stream(filePath);
std::string line;
std::stringstream ss;
while (getline(stream, line)) {
ss << line << 'n';
}
return ss.str();
}
当我使用这两行代码时有效,
std::string vertexShaderString = ReadShader("Shader/Vertex_Shader.vs");
const GLchar * vertexShaderSource = vertexShaderString.c_str();
即,vertexShaderString
包含预期的字符串,vertexShaderSource
显示预期字符串的第一个字符。
但是,当我尝试一行代码时,即,
const GLchar * vertexShaderSource = (ReadShader("Shader/Vertex_Shader.vs")).c_str();
vertexShaderString
具有一致的字符行,十六进制代码为 0xdd,并且vertexShaderSource
显示相同的0xdd第一个字符。 也就是说,两者都没有预期的字符串。
GLchar
是一个用于 char
的 OpenGL typedef
我认为我缺少一个C++基本的东西。
您的第二个代码版本类似于以下内容:
const GLchar * vertexShaderSource;
{
std::string tmp = ReadShader("Shader/Vertex_Shader.vs");
vertexShaderSource = tmp.c_str();
} // tmp is destroyed here
我希望这能更明显地表明您的指针指的是超出范围并释放其内存的std::string
的内容。
相关文章:
- 使用char类型将decimal转换为string,将string转换为decimal
- 将C++ std::string 转换为 UTF-16-LE 编码的字符串
- 如何将带有十六进制值的 std::string 转换为 std::vector<无符号字符>
- 无法从'const std::string [3]'转换为'std::string'
- 从 std::string 转换为 const 无符号整数
- C++ 模板函数无法将"std:string"转换为"double"作为回报
- 将 std::string 转换为 const char* 用于 printf 消耗
- 将 std::string 转换为 const tchar*
- 如何在PHPCPP库中将C++map<string,map<string>>转换为php::value?
- 将 std::string 转换为具有特殊字符的 FString (TCHAR / wstring)
- 将 std::string 转换为 wchar_t* 的类型定义
- 在 C++03 中将 std::string 转换为 int
- 将 'hana::string' 转换为 'constexpr const char (&)[]'
- 正确的交叉平台从 std::string 转换为 'const TCHAR *'
- 从矢量<string>转换为wchar_t**
- 将 std::vector<std::string> 转换为 const char* const*
- 将 std::string 转换为 boost::asio::streambuf
- C++ SNAP 库将 std::string 转换为 TStr
- 自动将 std::string 转换为 char* 而无需每次都调用 c_str() 的最佳方法
- 将 std::string 转换为 Swift String