小编Jae*_*LEE的帖子

如何在Visual Studio中禁用自动插入的内联键工作?

我喜欢Visual Studio 2015 的Move定义位置重构功能,除了一件事.它会inline在函数定义之前自动插入关键字.所以我总是不得不自己删除它们.

就是这样.

在重构之前.

class GameLoop
{
public:
    void drawGame() {

    }
};
Run Code Online (Sandbox Code Playgroud)

重构后(移动定义位置)

//GameLoop.h
class GameLoop
{
public:
    void drawGame();
};
//GameLoop.cpp
inline void GameLoop::drawGame() {

}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何禁用这个自动inline关键字?

谢谢.


谁不知道这个功能在哪里.

  1. 将光标移动到要重构的方法上

  2. [编辑] - > [重构] - > [移动定义位置]

要么

  1. Ctrl +.快捷方式并选择移动定义位置

c++ visual-studio visual-studio-2015

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

带有'with'语句的非阻塞锁

据我所知,如果lock已被另一个线程获取,将阻止以下代码.

似乎非阻塞可以通过实现lock.acquire(0),但我必须使用try-finally块代替with块.

lock = threading.Lock()

def func():
 with lock:
  # do something...
Run Code Online (Sandbox Code Playgroud)

有没有任何方法可以实现非阻塞锁定获取?

python multithreading locking

7
推荐指数
2
解决办法
6481
查看次数

将int32重新解释为float

我需要保存一个浮点值,它是一个整数值的复制内存.在reinterpretedFloat函数中,我创建了一个样本整数并将内存复制到float变量.事情是变化值当的memcpy-ED浮动收益.

这是示例代码.

#include <stdio.h>
#include <stdint.h>

void printHex(const unsigned char* buff, int count)
{
    printf("0X");
    for (int i = 0; i < count; ++i)
    {
        printf("\t%X", buff[i]);
    }
    printf("\n");
}

float reinterpretedFloat()
{
    int32_t value = 0x7F845E58;
    float tmp;
    memcpy(&tmp, &value, sizeof(float));
    printHex(reinterpret_cast<const unsigned char*>(&tmp), 4); //memcpy
    return tmp;
}

int main()
{
    float newFloat = reinterpretedFloat();
    printHex(reinterpret_cast<const unsigned char*>(&newFloat), 4); //returned value

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

这是结果.

0X      58      5E      84      7F(memcpy)
0X      58      5E      C4 …
Run Code Online (Sandbox Code Playgroud)

c++ x86 nan reinterpret-cast

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

CSV 的二进制版本

我想询问一种方便数据记录的文件格式。

例如,我要记录轨迹数据,数据会是这样的。

t, x, y, z
0.001, 0.1, 0.2, 0.3
0.002, 0.11, 0.19, 0.31
0.003, 0.13, 0.16, 0.35
Run Code Online (Sandbox Code Playgroud)

实际上,我搜索了有关文件格式的信息,发现上述文件格式称为csv(逗号分隔值)

由于 csv 将数据记录为纯文本,因此数据很容易被人类读取。

但有时需要长数字来记录数据(即15931548831、1248.128657)。

并且需要的数字越长,写入文件所需的时间就越长。

因此,我需要一种满足以下条件的文件格式。

  • 数据应该或可以以纯二进制形式记录
  • 文件中应包含元数据(即数据名称、记录日期)。

你认识什么人吗?

谢谢。

csv file-format

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

如何在matplotlib中以交互模式移动图形窗口?

我正在尝试使用 matplotlib 监控实时数据。

我发现我可以在 Pyplot 中使用交互模式动态更新绘图。

它运行良好,但一个问题是“我根本无法操纵图形窗口”。例如,移动或调整图形窗口的大小。

这是我的代码。

这是交互模式的缺点吗?还是我使用不当?

import matplotlib.pyplot as plt
import time
import math

# generate data
x = [0.1*_a for _a in range(1000)]
y = map(lambda x : math.sin(x), x)

# interactive mode
plt.ion() # identical plt.interactive(True)

fig, ax = plt.subplots()
# ax = plt.gca()
lines,  = ax.plot([], [])

# ax.set_ylim(-1, 1)
ax.grid()

MAX_N_DATA = 100
x_data = []
y_data = []
for i in range(len(x)):
    # New data received
    x_data.append(x[i])
    y_data.append(y[i])

    # limit data length …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

如何使用std :: ifstream读取UTF-8编码的文本文件?

我很难解析xml文件。

该文件使用UTF-8编码保存。

可以正确读取普通ASCII,但不能正确读取朝鲜语字符。

因此,我编写了一个简单的程序来读取UTF-8文本文件并打印内容。

文字档(test.txt)

ABC???
Run Code Online (Sandbox Code Playgroud)

测试程序

#include <fstream>
#include <iostream>
#include <string>
#include <iterator>
#include <streambuf>

const char* hex(char c) {
    const char REF[] = "0123456789ABCDEF";
    static char output[3] = "XX";
    output[0] = REF[0x0f & c>>4];
    output[1] = REF[0x0f & c];
    return output;
}

int main() {
    std::cout << "File(ifstream) : ";
    std::ifstream file("test.txt");
    std::string buffer((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
    for (auto c : buffer) {
        std::cout << hex(c)<< " ";
    }
    std::cout << std::endl;
    std::cout << buffer << std::endl;

    //String literal …
Run Code Online (Sandbox Code Playgroud)

c++ string encoding utf-8 ifstream

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

是否可以用CMake将某些符号替换为不同的符号?

我正在尝试用CMake制作一个可执行文件.此可执行文件需要位于项目中的文件的完整路径.

int main()
{
    std::ifstream("fullpath_to_file");
    //....
}
Run Code Online (Sandbox Code Playgroud)

我认为如果CMake可以用用户指定的字符串替换源代码中的某些符号,则不需要硬编码完整路径.

例如,如果CMake可以将${CMAKE_PROJECT_DIR}源代码(cpp)替换为cmake的变量,如$ {PROJECT_SOURCE_DIR},那么我就可以像这样编写源代码.

int main()
{
    std::ifstream("${CMAKE_PROJECT_DIR}/input/my_input.txt");
    //....
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

谢谢.

c++ cmake

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

如何用特征库计算零空间的基础?

如何用特征库计算矩阵零空间基础

我试图找到显式函数名来计算空基,并且作为一种变通方法,找到计算矩阵的rref的方法(因为我们能够从rref得到空基).

但我找不到任何相关的函数名称.

我认为必须有解决方案,但我不太了解Eigen库和Eigen的代码也很难理解.

请建议我解决这个问题的方法.

c++ linear-algebra eigen

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

特定成员函数的部分专业化

#include <iostream>

template <typename T1, typename T2>
class B{
public:
    void update(){ std::cerr<<__PRETTY_FUNCTION__<<std::endl; }
    void func1(){ std::cerr<<__PRETTY_FUNCTION__<<std::endl; }
    void func2(){ std::cerr<<__PRETTY_FUNCTION__<<std::endl; }
};

template <typename T1>
class B<T1, int>{
public:
    void update(){ std::cerr<<__PRETTY_FUNCTION__<<"(specialization)"<<std::endl;}
};

int main(){
    B<int, double> b1;
    b1.update();
    b1.func1();
    B<int, int> b2;
    b2.update();
    //b2.func1();//there's no function 'func1' in B<int,int>
}
Run Code Online (Sandbox Code Playgroud)

我想专门update针对特定模板参数(数据类型)的函数。

所以我尝试专业化template class B,但似乎我必须再次实现整个成员函数。

由于专业化之间的其他成员完全相同,因此重新实现整个成员看起来很麻烦。

对于这种情况有什么解决方法吗?

c++ templates partial-specialization specialization

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