小编Joo*_*kia的帖子

C/C++图像加载

我正在开发一个游戏引擎,我为编写多种格式的图像加载器太麻烦了,所以我的问题是:是否有一个抽象的图像加载库来加载图像文件?我只需要加载文件然后使用像素数组将它们打印到屏幕上.

c c++ image loading

12
推荐指数
2
解决办法
6万
查看次数

难以置信的是Unicode,Boost,C++,codecvts

在C++中,我想使用Unicode来做事情.因此,在掉下Unicode的兔子洞之后,我终于陷入了混乱,头痛和地方的火车残骸.

但是在Boost中,我遇到了一个不幸的问题,即尝试使用Unicode文件路径并尝试使用带有Unicode输入的Boost程序选项库.我已经阅读了关于locales,codecvts,Unicode编码和Boost主题的任何内容.

我目前试图让事情发挥作用的是使用一个带有UTF-8字符串的codecvt并将其转换为平台的编码(POSIX上的UTF-8,Windows上的UTF-16),我一直在努力避免wchar_t.

我实际上最接近的是尝试使用Boost.Locale,在输出时从UTF-8字符串转换为UTF-32字符串.

#include <string>
#include <boost/locale.hpp>
#include <locale>

int main(void)
{
  std::string data("Testing, ?");

  std::locale fromLoc = boost::locale::generator().generate("en_US.UTF-8");
  std::locale toLoc   = boost::locale::generator().generate("en_US.UTF-32");

  typedef std::codecvt<wchar_t, char, mbstate_t> cvtType;
  cvtType const* toCvt = &std::use_facet<cvtType>(toLoc);

  std::locale convLoc = std::locale(fromLoc, toCvt);

  std::cout.imbue(convLoc);
  std::cout << data << std::endl;

  // Output is unconverted -- what?

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

我想我还有其他一些转换工作使用宽字符,但我真的不知道我在做什么.我不知道这个工作的正确工具是什么.救命?

c++ unicode boost codecvt

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

列出迭代器+运算符

// ((++currentEntry)--) is equivalent to (currentEntry + 1). Kind of.
menuEntries.insert((++currentEntry)--, newEntries.begin(), newEntries.end());
Run Code Online (Sandbox Code Playgroud)

所以我这里有世界上最糟糕的代码.有一个更好的方法吗?

当使用'+ 1'时,我得到这个:

source/menu.cpp:146:37: error: invalid operands to binary expression
      ('list<menuEntry *>::iterator' (aka '_List_iterator<menuEntry *>') and
      'int')
                            menuEntries.insert(currentEntry + 1, ...
                                               ~~~~~~~~~~~~ ^ ~
Run Code Online (Sandbox Code Playgroud)

c++ stdlist

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

在C中获取当前语言环境的字符集?

如何在C中找到当前区域设置的字符集?

setlocale(LC_ALL,NULL)返回"en_US.UTF8",但有没有办法获取字符集?在我的系统上的/etc/locale.gen中,它列出了语言环境和字符集,因此它不在名称中.

c locale

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

std::map 按数据排序?

有没有办法按数据而不是键对 std::map 进行排序?现在我的代码将整个地图复制到一个数组中只是为了执行此操作。

c++ sorting stdmap

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

C++在源文件中使用命名空间

假设我正在创建一个项目,并且我将项目中的大多数项目都放在名为Project的名称空间中.我在名为MainProject的名称空间Project中定义了一个类.

在源文件中,要实现该类,我是否"使用命名空间项目;" 或者我将它包装在'名称空间项目{...}'巢中?

c++ namespaces

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

CMake Visual Studio“调试”文件夹

Visual Studio 坚持要求在使用 CMake 时必须在 bin/Debug/ 而不仅仅是 bin/ 中创建可执行文件。有没有办法来解决这个问题?

cmake visual-studio

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

Vim退出前(Esc Key)命令?

现在我在Vim进入一个新行(或者在正常模式下按'p'或'o')我得到一个可爱的自动缩进,如果我退出插入模式而不添加任何内容,它也会消失.

在退出插入模式之前有没有办法绑定某些东西,例如插入幻像字符然后删除它?

vim indentation esc-key

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

如何在C/C++中获取系统语言?

如何在C/C++中获取系统语言?像en_US或en_GB一样.

c c++ locale posix

4
推荐指数
3
解决办法
5551
查看次数

自定义流到C++中的方法?

我正在制作一个记录器,我希望有一些像流一样的事情发生,理想情况下,CLogger << "Testing, " << 1 << ",2,3\n";而不是CLogger->log("Testing, %i,2,3", 1);

我的问题是我该怎么做?我不想直接创建一个到stdout的流,因为我想使用我自己的方法,包括编写文件等.我已经考虑使用某个结构重载,该结构将当前流缓冲区刷新为方法,但我必须这样做CLogger << flush << "Test!\n";,这有点奇怪.

有人知道怎么做这个吗?

c++ stream

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