提问人:flakes 提问时间:4/3/2023 更新时间:4/3/2023 访问量:58
为什么在此代码中,std::string 的第一个参数需要 parens?[复制]
Why are parens needed for the first argument to std::string in this code? [duplicate]
问:
这个问题在这里已经有答案了:
如何通过直接值初始化来避免最令人烦恼的解析? (1 个回答)
关于最令人烦恼的解析的令人困惑的细节 (4 个答案)
最令人烦恼的解析的目的是什么? (6 个答案)
8个月前关闭。
我正在尝试将文本从文件加载到实例中。我遇到了这个答案,并将其改编为:const char*
std::ifstream vertex_shader_stream("shaders/demo1_vert.glsl");
std::string vertex_shader_string(
(std::istreambuf_iterator<char>(vertex_shader_stream)),
std::istreambuf_iterator<char>());
const char *vertex_shader_bytes = vertex_shader_string.c_str();
我难以理解的是,为什么第一个参数被包装在 parens 中。我以为这可能是一些多余的打字,但在调用时没有它们似乎会失败std::string
()
(std::istreambuf_iterator<char>(vertex_shader_stream))
c_str
error: request for member ‘c_str’ in ‘vertex_shader_string’, which is of non-class type ‘std::string(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> > (*)())’ {aka ‘std::__cxx11::basic_string<char>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> > (*)())’}
[build] 61 | const char *vertex_shader_text = vertex_shader_string.c_str();
[build] | ^~~~~
我不是在这里摸索错误,有人可以向我详细解释这是怎么回事吗?我敢肯定这可能是重复的,所以如果是这种情况,请随时关闭投票,我只是不知道要搜索的正确术语!
谢谢!
答: 暂无答案
评论