小编Ste*_*low的帖子

Qt翻译和git的最佳实践

今天我尝试合并一个Qt项目的两个git分支.两个分支都为它们添加了一些新的字符串和新的翻译.现在,Qt的lupdate工具存储了.ts文件中需要转换的源文件的行号.您可以想象两个分支的行号不相同,并且当两个翻译文件都已更新时,这会导致每个翻译文件出现数百个这样的合并冲突:

<<<<<<< HEAD
 +        <location filename="../../src/network/mail/CSmtp.cpp" line="856"/>
=======
+         <location filename="../../src/network/mail/CSmtp.cpp" line="860"/>
>>>>>>> master
Run Code Online (Sandbox Code Playgroud)

您可能会说只使用其中一个版本并再次运行lupdate,但这样您就会丢失其中一个分支的所有新翻译.

其他工具,如gettext,没有这个问题,因为它们不存储行号.

在Qt中有哪些避免这个问题的好方法?

git merge qt localization internationalization

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

C++ 11中的std :: nextafter()如何产生比std :: numeric_limits :: min更小的值?

我只是注意到std::nextafter(0, 1)在我的系统上似乎产生一个大于0且小于0的值std::numeric_limits::min().

这怎么可能?我认为min()返回大于0的最小可能数.

#include <iostream>

int main(int argc, char *argv[])
{
    double next = std::nextafter(0.0, 1.0);
    double min = std::numeric_limits<double>::min();
    std::cout << "next: " << next << "\nmin:  " << min << "\nnext<min: " << (next < min) << "\nnext>0:   " << (next > 0.0) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

输出:

next: 4.94066e-324
min:  2.22507e-308
next<min: 1
next>0:   1
Run Code Online (Sandbox Code Playgroud)

我的编译器是MinGW 5.3.0 32bit.

c++ c++11

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

我应该将值移出可选值还是移动整个可选值?

std::move(*optional)和之间有有效的区别吗*std::move(optional)?哪一个更可取?

完整示例:

#include <optional>
#include <vector>

void foo()
{
    std::optional<std::vector<int>> ov = std::vector<int>{};
    std::vector<int> v;
    v = std::move(*ov);
}

void bar()
{
    std::optional<std::vector<int>> ov = std::vector<int>{};
    std::vector<int> v;
    v = *std::move(ov);
}
Run Code Online (Sandbox Code Playgroud)

c++ move c++17 stdoptional

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

如果您传递两个相同的指针作为输入,那么memcmp会做什么?

我正在比较两个字节数组memcmp(或更确切地说,是一个库函数来做到这一点)。阵列可能会变得相对较大,并且在许多情况下它们实际上可以是同一阵列。

写这样的东西有意义还是memcmp已经在内部做到这一点?

int memcmp_wrapper(const void* lhs, const void* rhs, std::size_t count) {
    if (lhs == rhs)
        return 0;
    return std::memcmp(lhs, rhs, count);
}
Run Code Online (Sandbox Code Playgroud)

c++ memcmp

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

LibVLC:字幕和全屏问题

我目前正在尝试使用LibVLC播放视频并提出一些问题:

  1. 在具有多个屏幕的计算机上,如何告知LibVLC在特定屏幕上显示全屏?
  2. 我试着用libvlc_video_set_marquee_int.经过一些跟踪和错误后,我发现,在设置一个字幕文本之前,我在启动视频大约70ms后暂停主线程时它会起作用.为什么?我怎么能做得更好?
  3. 我想显示一个字幕文本,但没有视频标题(LibVLC在开头显示视频标题或文件名).我读到你可以通过传递--no-video-title-show选项来禁用视频标题libvlc_new().然而,这有两个问题:首先,文档说不应该传递选项.好吧,好吧......但其次使用这个选项对字幕文本有一个奇怪的效果:你可以设置一个文本,但它只是闪烁一次并立即消失,无论libvlc_marquee_Timeout设置为什么.

libvlc

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

标签 统计

c++ ×3

c++11 ×1

c++17 ×1

git ×1

internationalization ×1

libvlc ×1

localization ×1

memcmp ×1

merge ×1

move ×1

qt ×1

stdoptional ×1