小编Sum*_*mit的帖子

如何在 Microsoft Visual Studio 2017 中检查 C++ 版本

我正在尝试使用以下代码检查我拥有的 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++?

c++ visual-studio visual-c++

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

我需要删除 std::localtime 返回的指针吗?

这就是我当前获取系统时间的方式:

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;

c++

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

如何使用 std::to_string 函数将浮点数格式化为“x.0”

我正在使用 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 并删除多余的零。

c++ c++11

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

如何在相机类中添加滚动

我正在构建一个相机课程,并从构建该课程的在线教程中获得了帮助。

现在我想在相机中添加滚动条,但找不到任何阅读材料来解释如何在相机中添加滚动条。

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)

c++ opengl glm-math

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

如何为定制结构配置VAO和VBO

我正在尝试建造一个酒吧。

首先我声明一个结构

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)

c++ opengl glm-math

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

为什么 lambda 中的变量无法调用函数

这是班级。

#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)

但是该函数没有被执行。

c++ c++11 c++14

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

将数字插入字符串

我有以下字符串

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然后替换字符串的最后一个字符。

只是想知道我是否可以对此有更完善的方法。

c++ c++11 c++14

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

标签 统计

c++ ×7

c++11 ×3

c++14 ×2

glm-math ×2

opengl ×2

visual-c++ ×1

visual-studio ×1