【发布时间】:2020-10-03 08:49:25
【问题描述】:
当我创建 std::string 并像这样在程序中定义它并将其打印到控制台时,它看起来像这样:
std::string shader = "#version 330\nlayout(location = 0) in vec3 vp;void main(){gl_Position = vec4(vp, 1.0);}";
printf("Original: %s\n", shader.c_str());
但是当我以下面的方式从文件中加载 std::string 然后将其打印到控制台时,它看起来像这样:
std::string shader;
std::ifstream inputStream(path, std::ifstream::in);
if (inputStream.is_open())
{
while (inputStream.good())
{
std::string line;
getline(inputStream, line);
shader.append(line);
}
}
printf("LOADED: %s\n", shader.c_str());
文本文件:
#version 330\n
layout(location=0) in vec3 vp;
void main ()
{
gl_Position = vec4 (vp, 1.0);
}
从文件加载时我需要它做同样的事情。更具体地说,我需要它使用特殊字符 \n。
这里的问题是我需要在“..330”和“布局...”之间换行
【问题讨论】:
-
只是不要把
\n放在你的文件里? -
我想到了这一点,但我需要它在新行上并且删除它不会有帮助。
-
如果您删除
\n,请证明您遇到的问题。 -
是的,我编辑了帖子,你现在可以看到我删除后的问题\n
-
你报告的输出怎么和你的文本文件不对应?
标签: c++ printf ifstream stdstring