小编aug*_*tin的帖子

如何重现 git log --oneline --decorate 的格式?

git log --oneline --decorate 的格式在哪里定义的?

使用 git Iog --format=format:'my format',我无法重现 git log --oneline --decorate 所示的分支、标签和 HEAD 的颜色。

 git log --oneline --decorate    
Run Code Online (Sandbox Code Playgroud)

浅蓝色显示 HEAD,绿色显示分支名称,棕色显示标点符号 (,,)。

我最接近得到我想要的东西是:

git log --graph --abbrev-commit --decorate --date=short --format=format:'%C(bold blue)%h%C(reset) %C(bold green)%ad%C(reset)%d %C(white)%s%C(reset)' -20  
Run Code Online (Sandbox Code Playgroud)

唯一的区别是分支/HEAD/标签的颜色与上一个命令不同。

git git-log

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

如何实现关联数组/映射/散列表数据结构(通常和在C++中)

好吧,我正在制作一个小型电话簿应用程序,我已经决定使用地图将是最好的数据结构,但我不知道从哪里开始.(必须从头开始实施数据结构 - 学校工作)

c++ maps associative-array hashtable

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

booster :: noncopyable有哪些用例?

首先:是boost ::不可复制还是booster ::不可复制。我在不同的地方见过。

为什么要使一类不可复制?您可以举一些示例用例吗?

c++ boost noncopyable

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

C++:int的默认长度是多少?

我一直在寻找一段时间,但无法找到这个看似简单的问题的明确答案:int的默认长度是多少?

我知道默认情况下会签署一个int.但它是短期还是长期?

根据以下页面中的"基本数据类型"表,默认情况下int是一个long int(4个字节). http://www.cplusplus.com/doc/tutorial/variables/

它总是正确的,还是取决于操作系统(32位/ 64位),编译器还是其他东西?

c++

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

如何在Linux中包含Qt库(qwebview.h)?

我刚刚开始使用Qt库.我正在尝试使用以下标头编译我的第一个测试脚本:

#include <qwebview.h>
Run Code Online (Sandbox Code Playgroud)

但它不会编译:

g++ main.cpp -o run.main
main.cpp:2:22: error: qwebview.h: No such file or directory
main.cpp: In function ‘int main()’:
main.cpp:10: error: ‘QWebView’ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

我的Linux Kubuntu机器上安装了libs:

$ locate qwebview
/usr/include/qt4/Qt/qwebview.h
/usr/include/qt4/QtWebKit/qwebview.h
/usr/lib/qt4/plugins/designer/libqwebview.so
Run Code Online (Sandbox Code Playgroud)

我跑了ldconfig一次以确保(我认为)可以看到libs,但显然,这还不够.

如何设置我的机器以便我可以开始使用Qt编译软件?

linux qt qwebview

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

如何使用动态加载的函数(dlopen)操作/返回数据?

我花了几天阅读并重新阅读我在这个主题上找到的每一个教程,花了几个小时(甚至几天)在这里浏览相关问题,但我仍然无法让以下工作.如果这是重复的话,请接受我的道歉:我有可能多次看到并重读了重复的问题,但无法理解答案与我的问题的相关性.随着那个...

我正在尝试为我的应用程序实现插件架构.插件编译并作为库安装.在运行时,Application然后使用dlopen()/ dlsym()加载并链接到插件的函数.
想法是插件(库)将实现一组函数以将数据返回到主Application,或者操纵从Application传递的数据.

为了测试这个想法,我试图实现一个函数(插件内部),该函数将返回插件本身的(人类可读)名称(作为std :: string).我认为这将是一件简单的事情....: - /

这是我到目前为止所得到的:

// Plugin.cpp
extern "C" void plugin_name(std::string *name) {
        name = new std::string("Example plugin name");
}

// Application.cpp
void* handle = dlopen("libplugin.so", RTLD_LAZY);
typedef void (*plugin_t)(std::string*);
dlerror(); // Reset errors.
plugin_t call_plugin_name = (plugin_t) dlsym(handle, "plugin_name");
// ... Some error handling code.
std::string my_plugin_name;
call_plugin_name(&my_plugin_name);
dlclose(handle);
// More code that displays my_plugin_name.
Run Code Online (Sandbox Code Playgroud)

我已经尝试了许多不同的组合,包括一个看起来更直接(但没有更好的工作)的插件名称返回的组合:

// Plugin.cpp
extern "C" std::string plugin_name(void) {
        return std::string("Example plugin name");
}
Run Code Online (Sandbox Code Playgroud)

我知道我很接近:代码编译,应用程序停止崩溃;)
但是,我有一个空的空间,我希望看到实际的插件名称.

到目前为止,我读过的所有教程都非常快速地通过两种方式传递数据的机制:plugin <=> Application.我正在尝试使用"简单"的std :: …

c++ plugins dlsym

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

如何使用pstream获得全流输出?

http://pstreams.sourceforge.net/ pstreams显然是一个非常简单的库,为C++重新实现了popen().

该库安装非常简单,只包含一个头文件.您可以在此处下载头文件并将其添加到您的应用程序中:http:
//pstreams.cvs.sourceforge.net/viewvc/pstreams/pstreams/pstream.h?view = log

我认为我想要的非常简单:向系统发送命令并获取其输出.pstreams的主页(上图)和文档提供了以下示例:

redi::ipstream in("ls ./*.h");
std::string str;
while (in >> str) {
    std::cout << str << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

它似乎运行良好,但代码实际上从输出中剥离所有空格和回车.试试这个:

redi::ipstream in("ls -l"); /* The command has a slightly more complicated output. */
std::string str;
while (in >> str) {
    std::cout << str
}
std::cout << std::endl;
Run Code Online (Sandbox Code Playgroud)

我们得到一个没有任何空间的looong连接字符串.

我尽力理解文档,最接近解决方案的是:

 redi::ipstream in("ls -l");
 std::string str;
 while (!in.rdbuf()->exited()) {
 in >> str;
 }
 std::cout << str << std::endl;
Run Code Online (Sandbox Code Playgroud)

但是,输出在第一个空格处完全截断.

我受到了阻碍.

相关问题:
c ++中的popen等价
如何使用POSIX执行命令并在C++中获取命令输出?

主持人请注意:此问题和上述其他两个问题需要pstreams标记.

c++ system stream popen

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

如何查看包含 git 暂存更改的文件

git diff --staged 允许您查看 HEAD 和暂存更改之间的更改。

如果我要提交暂存的更改,如何查看 HEAD 中存在的完整文件?如何查看其中的特定行子集?

git git-stage

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

Cmake不会创建.so版本和soversion符号链接

cmake使用适当的soname版本和相关符号链接创建和安装共享对象的所有必要条件是什么?

我最近升级了我的系统,以前与cmake 2.8兼容的系统不再与cmake 3.7兼容。我检查了最新的文档,但对于我的问题,我却听不懂。

我以前安装过.so文件,除了符号链接之外,还安装了具有完整版本的真实.so文件。

 pluginname.so.1 => pluginname.so.1.1.0
 pluginname.so.1.1.0
Run Code Online (Sandbox Code Playgroud)

现在,cmake只构建并安装 pluginname.so,而没有任何版本后缀或符号链接。

我不在任何地方使用NO_SONAME:https ://cmake.org/cmake/help/v3.7/prop_tgt/NO_SONAME.html#prop_tgt:NO_SONAME

add_library(${PLUGIN_NAME} MODULE ${SRC})

# I call message(...) to check that the values are indeed set:
message("plugin ${PLUGIN_NAME}") 
message("version ${CORE_MAJOR_VERSION}.${PLUGIN_MAJOR_VERSION}.${PLUGIN_BUGFIX_VERSION}") 
message("soversion: ${CORE_MAJOR_VERSION}")
message("prefix ${PLUGIN_PREFIX}") 

if (NOT NO_SONAME)
   message("Ok, no_soname is not set!")
endif()

set_target_properties(${PLUGIN_NAME} PROPERTIES
    VERSION ${CORE_MAJOR_VERSION}.${PLUGIN_MAJOR_VERSION}.${PLUGIN_BUGFIX_VERSION}
    SOVERSION ${CORE_MAJOR_VERSION} 
    PREFIX ${PLUGIN_PREFIX}
)
 install(TARGETS ${PLUGIN_NAME} DESTINATION ${PLUGIN_INSTALL_DIR})
Run Code Online (Sandbox Code Playgroud)

还有哪些其他调试策略可以在这里工作?

我曾试图改变add_library($ {} PLUGIN_NAME MODULE $ {} SRC)线更换模块共享关系,但它似乎不有所作为。

cmake

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

什么是PHP的is_dir()的C++等价物?

什么是PHP的is_dir()的C++等价物?

http://www.php.net/manual/en/function.is-dir.php

bool is_dir(string $ filename)
判断给定的文件名是否是目录.

仅在Linux平台上工作,您将使用哪个库?

如果跨平台支持很重要,您会使用什么方法?

c++ linux filesystems directory

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

如何更改库包含来自bash的二进制文件的路径?

我在Kubuntu上正确安装了一个软件.

现在,我正在修补和测试它的一些库.

如何从bash启动软件,以便加载我的修补库而不是官方库?

例如:
官方的lib定位/ usr/lib中/
我的补丁库(测试开发过程中使用)是在/ home /用户的/ dev/lib目录/

我试过了:

$ set LD_LIBRARY_PATH=/home/user/dev/lib/  
$ binary_app &
Run Code Online (Sandbox Code Playgroud)

但无济于事.

我倒认为可以从庆典中设置一个解决方案,但如果它是不可能的,我还可以修改这个C++软件的cmake的文件.

目的是允许我使用vanilla libs轻松启动应用程序,或者使用我的修补库来查看差异.

编辑:这是一个KDE .so文件

我正在测试的库是一个KDE4库.官方lib位于/ usr/lib/kde4 /中.在该目录中,没有任何库以lib前缀开头.

我是否这样做:

/lib/ld-linux-x86-64.so.2 --list  --library-path PATH EXEC  
Run Code Online (Sandbox Code Playgroud)

要么

ldd EXEC  
Run Code Online (Sandbox Code Playgroud)

图书馆根本没有列出.

另一方面,如果将原始库从/ usr/lib/kde4 /移开,则应用程序启动但缺少相应的功能.

KDE4库是否以特定方式加载?也许要设置的变量是不同的......

编辑2

所有的答案都很好而且很有用......不幸的是,事实证明这个问题似乎与lib路径设置无关.我正在处理插件架构,并且.so加载路径似乎在应用程序的某处硬编码.我需要在源代码中花费更多时间来了解正在发生的事情......谢谢,并且+1给所有人.

c++ linux bash kde4 include-path

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

C++:可以为int分配一个char*吗?

我读高级Linux编程第2章:
http://www.advancedlinuxprogramming.com/alp-folder/alp-ch02-writing-good-gnu-linux-software.pdf

在本节中2.1.3 Using getopt_long,有一个示例程序有点像这样:

int main (int argc, char* argv[]) {
  int next_option;
  // ...
  do {
    next_option = getopt_long (argc, argv, short_options, long_options, NULL);
    switch (next_option) {
       case ‘h’: /* -h or --help */
       // ...
    }
    // ...
Run Code Online (Sandbox Code Playgroud)

引起我注意的是next_option被声明为int.函数getopt_long()显然返回表示其在下面的switch语句中使用的短命令行参数的int.为什么可以将该整数与switch语句中的字符进行比较?

是否有从char(单个字符?)到int的隐式转换?上面的代码如何有效?(参见链接pdf中的完整代码)

c++ linux casting char

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

在多个字段上查找违反唯一约束的重复行

我的 CMS 升级有以下查询:

ALTER IGNORE TABLE locales_target ADD PRIMARY KEY (language, lid, plural)
Run Code Online (Sandbox Code Playgroud)

它失败的原因是:“键'PRIMARY'的重复条目'1-0'”。

我实际上在上面的查询中添加了 IGNORE ,但它没有帮助,因为表使用 InnoDB 引擎,所以实际上并没有忽略错误。

此页面显示如何查找违反唯一约束的重复行:http : //www.tocker.ca/2013/11/06/the-future-of-alter-table-ignore-syntax.html

SELECT GROUP_CONCAT(id), emailaddress, count(*) as count FROM users 
GROUP BY emailaddress HAVING count >= 2;
Run Code Online (Sandbox Code Playgroud)

但它是针对一个独特的领域。如何使用 3 字段主键查找重复行?

编辑:原始问题仍然存在,但这里有更多信息和更多相关问题:

1) '1-0' 在错误信息中代表什么?没有盖子 == 0 的行!

2)以下查询突出显示了部分问题:

mysql> select lid,  count(*) as count from france_locales_target group by lid having count != 1;
+------+-------+
| lid  | count |
+------+-------+
|    1 |     2 |
|    2 |     2 …
Run Code Online (Sandbox Code Playgroud)

mysql unique-constraint

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