小编Cro*_*oCo的帖子

string和const char*和.c_str()?

我遇到了一个奇怪的问题,我想知道它为什么会这样.我有一个类,其中有一个返回的成员函数std::string.我的目标是将其转换stringconst char*,所以我做了以下

    const char* c;
    c = robot.pose_Str().c_str();  // is this safe??????
    udp_slave.sendData(c);
Run Code Online (Sandbox Code Playgroud)

问题是我在Master方面遇到了一个奇怪的角色.但是,如果我执行以下操作

    const char* c;
    std::string data(robot.pose_Str());
    c = data.c_str();
    udp_slave.sendData(c);
Run Code Online (Sandbox Code Playgroud)

我得到了我期待的东西.我的问题是上述两种方法之间的区别是什么?

c++ string

17
推荐指数
4
解决办法
8499
查看次数

'for i = 0'与'for'循环中的'int i(0)'(分配vs初始化count变量)

我在教科书和论坛中看到了很多代码,人们在for循环初始化中使用赋值运算符来开始重复.例如,

for ( int i = 0; i < 5; ++i )   // common 
for ( int i(0);  i < 5; ++i ) // uncommon 
Run Code Online (Sandbox Code Playgroud)

我知道初始化变量比分配变量更快.为什么人们更喜欢前者呢?

c++

13
推荐指数
2
解决办法
3735
查看次数

将vector <double>转换为vector <string>(优雅方式)

我想知道是否有一种优雅的方式或内置函数可以转换vector<double>vector<string>.我所做的很简单

#include <iostream>
#include <string>
#include <vector>
#include <sstream>


std::vector<std::string> doubeVecToStr(const std::vector<double>& vec)
{
    std::vector<std::string> tempStr;

    for (unsigned int i(0); i < vec.size(); ++i){
        std::ostringstream doubleStr;
        doubleStr << vec[i];    
        tempStr.push_back(doubleStr.str());
    }

    return tempStr;
}


int main( int argc, char* argv[] )
{
    std::vector<double> doubleVec;
    doubleVec.push_back(1.0);
    doubleVec.push_back(2.1);
    doubleVec.push_back(3.2);

    std::vector<std::string> doubleStr;
    doubleStr = doubeVecToStr(doubleVec);

    for (unsigned int i(0); i < doubleStr.size(); ++i)
        std::cout << doubleStr[i] << "  ";

    std::cout << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ string double vector

11
推荐指数
3
解决办法
4907
查看次数

如何设置绘图的不透明度?

我有一些数据要绘制在一个图中.噪声数据正在破坏其他数据.如何更改给定数据的透明度级别?就我而言,我正在使用hold all命令来绘制几个数据.其中一个解决方案是改变LineWidth但我无法找到透明度选项的方法.我试过alpha如下

plot( noise_x, 'k', 'LineWidth', 1, 'alpha', 0.2)

但没有运气.

matlab plot transparency colors matlab-figure

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

conservativeResize(),新值为零值

如何在调整矩阵大小后将新值设置为零?在调整矩阵大小后,将新值设置为垃圾值而不是至少设置为零,这真的很奇怪.

N = 0;
Eigen::MatrixXd CO;
CO.setZero(3+3*N, 3+3*N);
std::cout << CO << std::endl << std::endl;
Nt = 1;
CO.conservativeResize(3+3*Nt,3+3*Nt);
std::cout << CO << std::endl << std::endl;
Run Code Online (Sandbox Code Playgroud)

结果

在此输入图像描述

c++ eigen3

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

如何显示像theta这样的数学符号

我正试图找到一种方法来显示数学符号,如\ theta,\ phi,\ dot {\ theta},...等等.我找不到在我的情节中显示这些字母的方法.是否qcustomplot支持数学符号?我尝试了以下几行,但很少有字母出现,但其余的则没有.

ui->customPlot1->graph(0)->setName(QString("\u0024"));

c++ qcustomplot

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

检查矩阵中的所有条目在特征库中是否为零

首先,我不确定这是否可行.我想在特征库中检查矩阵是否为零(注意:我必须声明它).我的解决方案是检查所有元素是否为零.我的问题是,在保持矩阵大小不变的情况下,还有另一种方法可以完成这项任务吗?

#include <iostream>
#include <Eigen/Dense>

// true if it is empty, false if not
bool isEmpty(Eigen::MatrixXd& Z)
{
   bool check = true;

   for (int row(0); row < Z.rows(); ++row)
    for (int col(0); col < Z.cols(); ++col){
        if ( Z(row,col) != 0 ){
            check = false;
            break;
        }
     }

   return check;
}


int main()
{
    Eigen::MatrixXd Z(3,3);

    if ( isEmpty(Z) )
        std::cout << Z.size() << std::endl;
    else
        Z.setZero(0,0); // resize the matrix (not clever way I know)

    std::cin.get();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ eigen3

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

什么是Qt中普通C++项目的`deployment.pri`

我想知道deployment.pri当我创建一个普通的C++项目时这个文件是什么.此外,是否有一个选项可以关闭使用普通C++项目添加此文件?我最终删除了它,但每次创建普通的C++项目时我都必须这样做.

c++ qt

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

无法编译OpenGL Superbible 7th(未解析的外部符号)的样本

我正在按照步骤进行操作HOWTOBUILD.txt.我已经为glfw构建了必要的文件.链接器第一次抱怨glfw.搜索后,似乎我需要链接反对gl3w 看到这个链接.我为它生成了静态库gl3w.现在,我已经开了一个新项目并包含了路径include,见下图.

在此输入图像描述

对于链接器,我已经链接glfw3dll.lib gl3w.lib opengl32.lib并包含它们的路径.如果我从第一章开始运行样本,

main.cpp

#include "sb7.h"


class my_application : public sb7::application
{
    void render(double currentTime)
    {
        static const GLfloat red[] = { 1.0f, 0.0f, 0.0f, 1.0f };
        glClearBufferfv(GL_COLOR, 0, red);
    }
};


DECLARE_MAIN(my_application);
Run Code Online (Sandbox Code Playgroud)

我收到链接器错误.

1>main.obj : error LNK2019: unresolved external symbol "int __cdecl sb6IsExtensionSupported(char const *)" (?sb6IsExtensionSupported@@YAHPBD@Z) referenced in function "public: virtual void __thiscall sb7::application::run(class sb7::application *)" (?run@application@sb7@@UAEXPAV12@@Z)
1>main.obj : error LNK2019: unresolved external symbol "private: static void …
Run Code Online (Sandbox Code Playgroud)

c++ windows linker-errors opengl-4

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

LNK1168:无法打开debug \ file.exe进行写入

我有qt项目,但是如果我编辑代码,Qt创建者会抛出此错误

:-1: error: LNK1168: cannot open debug\GettingStarted.exe for writing

我什至无法删除调试文件夹(即以管理员身份)。我必须注销然后再回来。有什么问题,我该如何解决?

c++ windows qt-creator qt5

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