在当前的C++标准(C++ 03)中,关于文本本地化的规范太少,这使得C++开发人员在使用本地化文本时比以往更加艰难(当然,C++ 0x标准稍后会有所帮助).
去年我研究了这个,我唯一确定的是你应该使用std::wstring或std::basic_string<ABigEnoughType>操纵应用程序中的文本.我停止了我的研究,因为我的工作更多的"文本显示"的问题(在实时3D的情况下),但我想有管理的纯粹的C本地化的文本++不仅仅是这一点,"使用Unicode"的一些最佳做法.
所以,欢迎所有最佳实践,建议和信息(跨平台让我觉得很难)!
从C++ 11标准的角度来看,对象状态/属性之间是否存在技术差异:
namespace
{
int foo;
const int bar = 42;
}
Run Code Online (Sandbox Code Playgroud)
和
namespace
{
static int foo;
static const bar = 42;
}
Run Code Online (Sandbox Code Playgroud)
?
从这里的问题和答案我相信匿名命名空间中的对象是隐式静态的,但是有人告诉我它只是内部的链接,编译器不会把对象当作标记为静态的含义,如它将如何实现对象施工.所以我需要一些关于它真正含义的细节,如果匿名命名空间中有和没有静态之间存在差异.
我将项目代码从Qt4升级到Qt5.它使用CMake.除了与Qt相关的一行Cmake命令外,转换得很好.我在目前的文档中找不到像
如何从CMake(与Qt5)链接QtMain?
这是转换我的项目的唯一缺失位.有人能指点我解释这个或解释如何用Qt5做这个吗?我的Qt4代码工作正常,但我找不到Qt5的Cmake宏.
编辑>这是我目前的CMake文件:https://bitbucket.org/klaim/aos_qt5/src/593c195c4c6889f6968d68fca018ef425783a063/tools/aosdesigner/CMakeLists.txt? at =wip_qt5
所有qt5必需的CMake宏已经设置正确我相信,唯一不起作用的是连接到QtMain什么都不做,正如预期的那样,因为应该有一个Qt5特定的方式来做它我找不到的Qt5文档.
您可以浏览文件历史记录以查看它如何与Qt4一起使用.
在C++ 11中,我们现在可以:
void dosomething( std::vector<Thing>& things )
{
for( Thing& thing : things )
{
dofoo( thing );
wiizzz( thing );
tadaa( thing );
}
}
Run Code Online (Sandbox Code Playgroud)
我知道lambda的添加和使用是语法糖,但它提供了有趣的优化机会.
for循环怎么样?它只是语法糖还是编译器可以优化某些情况,它不能或者用手写循环太难了?
Herb Sutter提出了一个简单的实现make_unique():http://herbsutter.com/gotw/_102/
这里是:
template<typename T, typename ...Args>
std::unique_ptr<T> make_unique( Args&& ...args )
{
return std::unique_ptr<T>( new T( std::forward<Args>(args)... ) );
}
Run Code Online (Sandbox Code Playgroud)
我的问题是可变参数模板还不是VS2012的一部分,所以我不能按原样使用这个代码.
有没有一种可维护的方法在VS2012中写这个不会涉及使用不同的args计数复制粘贴相同的函数?
首先,我假设调用std :: chrono的任何函数都保证是线程安全的(没有未定义的行为或竞争条件或任何危险的,如果从不同的线程调用).我对么?
接下来,例如在窗口上存在与多核处理器相关的众所周知的问题,其迫使时间相关系统的一些实现允许迫使特定核获得任何时间信息.
我想知道的是:
在C++中,我需要定义一个宏.该宏将把参数作为代码的"块".
我们可以安全地使用几行代码作为宏函数的参数吗?
我问自己是否:
#define MY_MACRO( expr ) DOSOMETHING( (expr) ); DOANOTHERTHING( (expr) ); // etc...
int my_function() {
int o = RandomNumber();
MY_MACRO(
int k = AFunction();
k++;
AnotherFunction( k + o ); // here I need to keep the context of the call
);
}
Run Code Online (Sandbox Code Playgroud)
我们不能使用仿函数,因为我们需要访问调用的上下文.我们不能使用lambda(snif),因为我们使用的是一个不提供它的旧编译器(我们无法更改它).
我们(应该)知道C++标准库容器,包括std :: string,并不意味着继承自.但是,C++ 98/03确实允许我们这样做,即使它导致了错误.
现在该std::string关键字可用,是否标记final了标准库容器,以防止使用它们的继承?
如果没有,为什么?
我正在寻找这里所有XML/XSD编辑器的免费替代品(这是相对昂贵的 - 至少对我而言).我完全找不到一个.
我需要它来允许我编辑xsd文件以帮助编写基于xml的语言规范.我需要它是可视化的,以帮助设计,使其清晰.其他功能对我来说不那么有趣.
有什么建议吗?
标题问一切:如何获取Groovy类的所有属性名称?
它甚至可能吗?我以为我可以使用类的集合语法,但它似乎不起作用.