小编Abr*_*ile的帖子

从std :: fstream检索文件描述符

可能重复:
从std :: fstream获取文件*

我正在研究Linux,文件描述符是这个操作系统的主要模型.

我想知道是否有任何库或任何方法从C++开始检索本机Linux文件描述符std::fstream.

我想过,boost::iostream因为有一个叫做的课,file_descriptor但我明白它的目的与我想要达到的目的不同.

你知道某种方法吗?

c++ fstream file-descriptor

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

追加与调整numpy数组的大小

我想在我的最后添加一个值numpy.array.我看到了numpy.append函数,但它执行原始数组的精确副本,最后添加了我的新值.我想避免复制,因为我的阵列很大.

我正在使用resize方法,然后将最后一个索引设置为新值.你能否确认这resize是最后追加价值的最佳方式?是不是在某处移动记忆?

oldSize = myArray,shape(0)
myArray.resize( oldSize + 1 )
myArray[oldSize] = newValue
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

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

std :: lower_bound和std :: find在普通数组上

我喜欢std::algorithm在普通数组上随时使用.现在我有两个疑惑; 假设我想使用std::lower_bound如果找不到我提供的值作为参数会发生什么?

int a[] = {1,2,3,4,5,6};
int* f = std::lower_bound(a,a+6,20);
Run Code Online (Sandbox Code Playgroud)

打印*f时的结果是20.

如果我使用同样的事情std::find.

int a[] = {1,2,3,4,5,6};
int* f = std::find(a,a+6,20);
Run Code Online (Sandbox Code Playgroud)

打印*f时的结果是20.

  1. 如果找不到,返回值是否始终是原始参数?
  2. 在性能方面表现std::lower_bound更好,std::find因为它实现了二进制搜索算法.如果数组很大说最多10个元素,std :: find可以表现更好吗?在幕后std :: lower_bound调用std :: advance和std :: distance ..可能我也可以保存这些调用吗?

非常感谢

AFG

c++ algorithm stl find lower-bound

14
推荐指数
3
解决办法
2万
查看次数

在Python中解析stdout

在Python中,我需要获取我需要在脚本中调用的外部二进制文件的版本.

假设我想在Python中使用Wget,我想知道它的版本.

我会打电话

os.system( "wget --version | grep Wget" ) 
Run Code Online (Sandbox Code Playgroud)

然后我将解析输出的字符串.

如何在Python中的字符串中重定向os.command的stdout?

python

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

C++ 0x vs boost中的线程析构函数

这些天我正在阅读pdf Designing MT程序.它解释了在该对象超出范围之前,用户必须在C++ 0x中显式调用detach()类的std::thread对象.如果你不打电话,std::terminate()它将被调用,应用程序将死亡.

我通常boost::thread在C++中使用线程.如果我错了,请纠正我但是boost::thread当一个对象超出范围时会自动分离.

在我看来,提升方法遵循RAII原则而标准没有.

你知道这有什么特别的原因吗?

c++ boost-thread c++11

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

如何使gdb tui窗口更大

我正在使用gdbin tui模式调试我的应用程序.

当我开始我的调试会话时,主窗口被分成2个相同大小的部分.

  • 带源代码的窗口(上侧)
  • 我可以调用gdb命令的窗口(下方)

2个窗口的大小完全相同.

是否有任何方法或组合键使源代码窗口比其他窗口大?有什么东西要做大吗?

linux debugging gdb tui

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

传递const char而不是std :: string作为函数参数

这是一个新手问题,但我无法理解它是如何工作的.

假设我有类似下面的功能

void foo(const std::string& v) {
    cout << v << endl;
}
Run Code Online (Sandbox Code Playgroud)

以及我程序中的以下调用.

foo("hi!");
Run Code Online (Sandbox Code Playgroud)

本质上我传递的const char*是一个函数参数,它是一个字符串的const引用,所以我对这个调用有疑问.

为了通过引用传递参数,我是否可以说变量必须至少在调用期间存在?如果是这样,在哪里创建传递给函数的字符串?

我可以看到它的工作原理:它是否会发生,因为编译器会创建一个string传递给参数或函数的临时函数?

c++ parameter-passing pass-by-reference

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

在operator <<中执行的顺序

我很难理解下面代码中的调用顺序.我期待看到下面的输出

    A1B2
Run Code Online (Sandbox Code Playgroud)

虽然我可以看到我得到的输出是

    BA12
Run Code Online (Sandbox Code Playgroud)

我认为这个电话std::cout<< b->fooA() << b->fooB() << std::endl相当于电话

  std::cout.operator<<( b->fooA() ).operator<< ( b->fooB() )
Run Code Online (Sandbox Code Playgroud)

但我可以看到情况并非如此.你能帮助我更好地理解它是如何运作的以及与全球的关系operator<<吗?这是最后一次调用这个序列吗?

问候

AFAG

#include <iostream>

struct cbase{
    int fooA(){
        std::cout<<"A";
        return 1;
    }
    int fooB(){
        std::cout <<"B";
        return 2;
    }
};

void printcbase(cbase* b ){
    std::cout << b->fooA() << b->fooB() << std::endl;
}

int main(){
    cbase b;
    printcbase( &b );
}
Run Code Online (Sandbox Code Playgroud)

c++ cout stream ostream operator-keyword

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

与boost文件系统无关的跨设备链接错误

我正在尝试使用一个文件从一个位置移动到另一个位置boost::filesystem.我使用了boost::filesystem::rename函数但是当我尝试这样做时,我有以下错误.

terminate called after throwing an instance of 
'boost::filesystem::filesystem_error'
what():  boost::filesystem::rename: Invalid cross-device link: 
"./file_A.csv",    "/opt/data/file_B.csv"
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

我明白问题是我试图将文件从一个文件夹移动到另一个文件夹上安装的另一个文件夹.

有什么不同的解决方案吗?

  1. 复制文件然后删除它(它给我一些安全感).
  2. 包裹mv在一个呼叫std::systen

boost::filesystem对于我想要实现的目标,还有其他功能吗?我自己找不到.

我正在使用g ++和linux.

c++ linux boost-filesystem

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

无需读取csv文件

我需要在python中读取一个CSV文件.

因为对于最后一行,我收到一个'NULL byte'错误,我想避免使用for keyword但是while.

你知道怎么做吗?

    reader = csv.reader( file )
    for row in reader  # I have an error at this line
          # do whatever with row

我想用for循环替换for循环,以便我可以检查行是否为NULL.

在CSV模块中读取单行的功能是什么?谢谢

谢谢

回溯在追溯之下

Traceback (most recent call last):
  File "FetchNeuro_TodayTrades.py", line 189, in 
    for row in reader:
_csv.Error: line contains NULL byte

python csv

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