我正在尝试使用以下代码检查我拥有的 c++ 版本。
if (__cplusplus == 201703L) std::cout << "C++17\n";
else if (__cplusplus == 201402L) std::cout << "C++14\n";
else if (__cplusplus == 201103L) std::cout << "C++11\n";
else if (__cplusplus == 199711L) std::cout << "C++98\n";
else std::cout << "pre-standard C++\n";
Run Code Online (Sandbox Code Playgroud)
输出是 C++98 版本,但我绝对能够使用 C++11 功能,所以我想我没有从代码中获得正确的版本。
如何检查我使用的是哪个版本的 C++?
这就是我当前获取系统时间的方式:
void Sum_AnalogClock::GetSystemTime()
{
std::time_t t = std::time(0); // get time now
std::tm* now = std::localtime(&t);
angleSeconds = now->tm_sec;
angleMinutes = now->tm_min;
angleHours = now->tm_hour;
if (angleHours > 12)
angleHours -= 12;
}
Run Code Online (Sandbox Code Playgroud)
我需要吗delete now;?
我正在使用 std::to_string 函数将浮点数转换为字符串。
float number = 30.0f; // this number will vary
Run Code Online (Sandbox Code Playgroud)
当我将浮点数转换为字符串时
std::to_string(number);
Run Code Online (Sandbox Code Playgroud)
std::cout 将结果显示为 30.000000
我希望结果为 30.0 并删除多余的零。
我正在构建一个相机课程,并从构建该课程的在线教程中获得了帮助。
现在我想在相机中添加滚动条,但找不到任何阅读材料来解释如何在相机中添加滚动条。
Camera(glm::vec3 position = glm::vec3(0.0f, 0.0f, 500.0f), glm::vec3 up = glm::vec3(0.0f, 1.0f, 0.0f), float yaw = YAW, float pitch = PITCH) : Front(glm::vec3(0.0f, 0.0f, -1.0f)), Zoom(ZOOM)
{
Position = position;
WorldUp = up;
Yaw = yaw;
Pitch = pitch;
updateCameraVectors();
}
glm::mat4 GetViewMatrix()
{
return glm::lookAt(Position, Position + Front , Up);
}
void updateCameraVectors()
{
glm::vec3 front;
front.x = cos(glm::radians(Yaw - 90)) * cos(glm::radians(Pitch));
front.y = sin(glm::radians(Pitch));
front.z = sin(glm::radians(Yaw - 90)) * cos(glm::radians(Pitch)) ;
Front = glm::normalize(front);
Right …Run Code Online (Sandbox Code Playgroud) 我正在尝试建造一个酒吧。
首先我声明一个结构
struct VertexFormat
{
glm::vec3 positions;
glm::vec3 normal;
glm::vec2 texCoord;
VertexFormat(glm::vec3 pos, glm::vec3 norm, glm::vec2 coord) : positions(pos), normal(norm), texCoord(coord)
{ }
};
Run Code Online (Sandbox Code Playgroud)
然后我配置 VAO 和 VBO
glBindVertexArray(m_VAO);
glBindBuffer(GL_ARRAY_BUFFER, m_VBO);
glBufferData(GL_ARRAY_BUFFER, data.size() * sizeof(VertexFormat), &data[0], GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size(), &indices[0], GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, data.size() * sizeof(VertexFormat), (void*)0);
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, data.size() * sizeof(VertexFormat), (void*)(3 * sizeof(float)));
glEnableVertexAttribArray(2);
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, data.size() * sizeof(VertexFormat), (void*)(6 * sizeof(float)));
glBindVertexArray(0);
Run Code Online (Sandbox Code Playgroud)
当我发出绘图命令时,没有绘制任何内容
glBindVertexArray(m_VAO);
glDrawElements(GL_TRIANGLES, 24, GL_UNSIGNED_INT, …Run Code Online (Sandbox Code Playgroud) 这是班级。
#include <iostream>
#include <string>
std::string strName = "ABC";
class BlueOut
{
public:
void printName() { std::cout << strName << std::endl; }
};
Run Code Online (Sandbox Code Playgroud)
现在我创建了这个类的一个对象
BlueOut blueout;
Run Code Online (Sandbox Code Playgroud)
我在 lambda 中调用对象的函数 printName()
auto a = [&]() { blueout.printName(); };
Run Code Online (Sandbox Code Playgroud)
但是该函数没有被执行。
我有以下字符串
std::string str = "000000"
Run Code Online (Sandbox Code Playgroud)
我想从 0 到 200 运行一个循环并在字符串中插入数字。
for( int i = 0 ; i < 200; i++ )
{
// insert number
}
Run Code Online (Sandbox Code Playgroud)
如果i = 1,则字符串应为“000001”。
如果i = 200,则字符串应为“000200”。
目前我正在将我的数字转换为字符串,然后检查它们的长度。基于此,我将数字插入字符串 iflen = 1然后替换字符串的最后一个字符。
只是想知道我是否可以对此有更完善的方法。