Articles of c ++ 11

是正则expression式的gcc 4.8或更早的车?

我正在尝试在C ++ 11代码中使用std :: regex,但看起来支持是有点bug。 一个例子: #include <regex> #include <iostream> int main (int argc, const char * argv[]) { std::regex r("st|mt|tr"); std::cerr << "st|mt|tr" << " matches st? " << std::regex_match("st", r) << std::endl; std::cerr << "st|mt|tr" << " matches mt? " << std::regex_match("mt", r) << std::endl; std::cerr << "st|mt|tr" << " matches tr? " […]

如何获得使用标准库创build的线程的winapi id?

C ++ 11的标准库包含允许线程创build的<thread> 。 不过,Windows API需要一些ID(即PostThreadMessage )。 我怎么才能得到它? 备注: std::thread::get_id()似乎不工作: PostThreadMessage(m_thread->get_id(), WM_QUIT, 0, 0); e:\documents\khook\khooker\hook_runner.cpp(129): error C2664: 'PostThreadMessageW' : cannot convert parameter 1 from 'std::thread::id' to 'DWORD'

如何在Sublime Text 3 C ++和Gtk +中构build系统

我想在Sublime Text 3中使用C ++和Gtk +构build一个简单的文本编辑器。使用Gtk +作为跨平台的应用程序。 现在我会满足于一个简单的窗口,虽然ST3不断出现问题。 我目前正在运行Windows 7 64位。 起初我将gtk+-bundle_3.10.4 64bit下载到C:\gtk+并下载了MinGW – 为C ++安装gcc-g ++。 然后我更新环境variables-PATH与文件夹C:/MinGW/bin;C:/gtk+/bin;…和其他path,如build议这里 。 现在在ST3中“build立系统”,我按照build议在这里做了 。 我运行脚本(pkg-config ..)得到一个“链接器”和一个“头文件”,结合起来,就像你可以在下面的代码中看到的一样(如这里所build议的)试图写入ST3,但是我得到的只是“没有build立系统“。 正如你现在所看到的 – 我迷路了,请帮助我,我很确定我错过了一些东西。 这里是我在ST3“build system”中编写的代码: { "cmd": ["g++", "-o" "${file_path}/${file_base_name}.exe" "-static-libgcc" "-static-libstdc++" "*.cpp" "-mms-bitfields – IC:/gtk+/include/gtk-3.0 – IC:/gtk+/include/cairo – IC:/gtk+/include/pango-1.0 – IC:/gtk+/include/atk-1.0 – IC:/gtk+/include/cairo – IC:/gtk+/include/pixman-1 – IC:/gtk+/include -I/srv/win32builder/fixed_3104/build/win64/include/freetype2 -I/srv/win32builder/fixed_3104/build/win64/include/libxml2 – IC:/gtk+/include/libxml2 -I/srv/win32builder/fixed_3104/build/win64/include/freetype2 […]

你需要安装使用Clang在Windows上构build64位的C + + 14?

更新: 我已经写了一个详细的教程,包含这个问题的前两个答案: http : //blog.johannesmp.com/2015/09/01/installing-clang-on-windows-pt1/ TL; DR 在Windows上,给定以下程序: #include <iostream> int main() { int arr[] = {1, 2, 3, 4, 5}; for(auto el : arr) { std::cout << el << std::endl; } return 0; } 我希望能够做到以下几点: clang++ hello.cpp -o hello.exe -std=c++14 并获得一个64位可执行文件正常工作 。 我不想再追加大量的-I包括告诉clang在哪里可以findiostream或其他标准的c ++头文件; 我不想在多个步骤中链接。 我不关心性能,效率,链接器的使用等等。我只是想能够正确设置clang / gcc /任何东西,这样我就可以使用一个单一的,快速和肮脏的控制台命令上面那个。 我需要安装什么才能工作 ? 问题 作为一个主要的Mac / […]

Windows上的C ++ 11

我想知道在C ++ 11中编写软件如何在Windows上工作。 这将是最舒适的(也是最自然的)使用Windows的本地编译器之一 – 我在想这里的Visual Studio 2012 Express或Visual Studio 2013 Express。 在这个问题上我所能find的一切都是 http://msdn.microsoft.com/en-us/library/vstudio/hh567368.aspx (比较VC10和VC11的C ++ 11function,这似乎是相当糟糕的) http://blogs.msdn.com/b/vcblog/archive/2013/06/28/c-11-14-stl-features-fixes-and-breaking-changes-in-vs-2013.aspx (不是真的透明,没有给我一个好主意,它有多好) 有没有人有任何经验目前的Visual Studio版本可以如何处理C + + 11? 我真的想开始使用自动,lambdas,可变参数模板,模板别名,初始化列表和右值引用(仅举几个),现在所有其他好东西,但如果Windows可能是一个问题,我可能不得不使用C ++ 03进一步。 另一种可能性似乎是在Windows上安装LLVM和Clang。 我的主要平台是OSX,在该系统上,Clang对C ++ 11的支持非常好。 但是我读到,C ++标准库(libc ++)的LLVM版本在Windows上不能正常工作。 所以LLVM /铛可能不是一个选项。 你对Windows上的C ++ 11开发有什么看法? 谢谢!

std :: u32string转换为/从std :: string和std :: u16string

我需要在UTF-8,UTF-16和UTF-32之间针对不同的API /模块进行转换,因为我知道可以select使用C ++ 11来查看新的stringtypes。 它看起来像我可以使用UTF-8,UTF-16和UTF-32的string , u16string和u32string 。 我还发现codecvt_utf8和codecvt_utf16看起来能够做char或char16_t和char32_t之间的转换,看起来像一个更高级别的wstring_convert但似乎只能使用字节/ std::string wstring_convert std::string而不是大量的文档。 我打算为UTF-16 UTF-32和UTF-8 UTF-32情况使用wstring_convert吗? 我只是真的find了UTF-8到UTF-16的例子,我甚至不能确定在wchar_t通常被认为是UTF-32的Linux上是正确的…还是直接用这些codecvt做些更复杂的事情呢? 或者这只是还没有真正处于可用状态,我应该坚持我自己现有的小例程使用8,16和32位无符号整数?

使用mingw和g ++ 4.7.2获取std :: thread / mutex在Win7下工作

问候, 我最近搬出了我的unix避难所来testing一个所谓的跨平台的networking库,只是发现mingw不喜欢被喂食c ++ 11的东西。 我认为我错过了所需的头文件,因为Win7并没有包含c ++ 11的支持。 它与VS2012编译得很好 但g ++拒绝。 error: 'thread' in namespace 'std' does not name a type error: 'mutex' in namespace 'std' does not name a type 问题是: 如何获得c ++ 11头文件/ lib的副本,即<thread>而不使用VS2012安装提供的。 PS#1我试过mingw得到更新,但它仍然不会find<thread> PS#2我也使用-std = c ++ 11 此致 克里斯。

如何使用C ++ / C ++ 11打印当前时间(以毫秒为单位)

目前我使用这个代码 string now() { time_t t = time(0); char buffer[9] = {0}; strftime(buffer, 9, "%H:%M:%S", localtime(&t)); return string(buffer); } 格式化时间。 我需要添加毫秒,所以输出的格式是: 16:56:12.321

MinGW和std :: thread

所以我一直试图通过使用MinGW编译器来获得下面的代码来编译和运行在Windows上。 #include <iostream> #include <thread> void test() { std::cout << "test" << std::endl; } int main() { std::thread t(test); } 我正在编译以下命令: g++ -std=c++11 test.cpp -o test.exe 现在问题是应该使用的MinGW的版本,我已经尝试了所有我知道的版本。 MinGW生成: thread-win32 MinGW生成: thread-posix MinGW-w64: stdthread实验rubenvb MinGW-w64: stdthread实验rubenvb 4.7 Number 1不起作用,因为GCC 显然只在内部支持 pthread的东西。 编号2编译,它本质上甚至输出test (见输出的最后一行),但它也崩溃的错误: terminate called without an active exception This application has requested the Runtime to […]

如何使用__stdcall来限定C ++ lambda?

前言 – 我喜欢C ++的lambda,如果可能的话我会在任何地方使用它。 现在我有一个lambda要求,我需要一个__stdcall lambda。 但是我收到以下错误消息: error C2664: 'EnumWindows' : cannot convert parameter 1 from '`anonymous-namespace'::<lambda1>' to 'WNDENUMPROC' 1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called 任何人都可以帮助我? 这里是我的代码( EnumWindowsProc是在函数范围内 ): auto EnumWindowsProc = [&](HWND hwnd, LPARAM lParam) mutable -> bool { return true; }; EnumWindows(EnumWindowsProc, NULL);