Articles of c + +

为什么utf-8字符不显示在cmd.exe中?

我在Windows下testingc + + 11string文字与tdm-gcc: #include <iostream> int main(int argc, char** argv) { std::cout << u8"你确定要这么做吗" << std::endl; return 0; } 命令行: e:\src\c++\11>g++ utf8_literal.cc -std=c++11 使用chcp 65001将代码更改为utf8,然后运行该应用程序,结果如此 你的第一个汉字是不正确的。 但是,如果添加一个英文字符,例如a那么显示是正确的: 因此我们可以排除字体问题。 为什么第一个字符拒绝显示前面没有英文字符?

如何定义task.json通过在Windows上使用cl.exe来编译vscode中的C / C ++代码?

我已经在64位win10上安装了Microsoft Visual C ++ Build Tools 2015,并且可以使用cl.exe通过以下步骤(通过设置path和环境中的一些说明)在简单的命令提示符窗口中编译和链接C / C ++程序命令行版本的variables ): 1. cd "\Program Files (x86)\Microsoft Visual Studio 14.0\VC" 2. vcvarsall amd64 3. cl helloworld.c helloworld.c只是一个简单的C源文件来打印“Hello world!”。 我也尝试使用task.json来直接编译和链接vs代码中的C / C ++程序。 这是我的task.json: { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "0.1.0", "command": "vcvarsall amd64 && cl", "isShellCommand": true, "args": ["${file}"], […]

覆盖文件没有损坏的文件的风险

所以经常我的应用程序想保存文件以后再加载。 最近因为崩溃而倒霉了,我想以这样一种方式编写操作,即保证有新的数据或原始数据,但不会有混乱。 我的第一个想法是做一些事情(保存一个名为example.dat的文件): 为目标目录提供一个唯一的文件名,例如example.dat.tmp 创build该文件并写入我的数据。 删除原始文件(example.dat) 重命名(“移动”)临时文件到原来的位置(example.dat.tmp – > example.dat)。 然后在加载时应用程序可以遵循以下规则: 如果没有“example.dat”而没有“example.dat.tmp”,首先运行/新build项目,这样就加载默认/新build文件。 如果“example.dat”没有“example.dat.tmp”,则加载example.dat(正常载入大小写) 如果存在“example.dat.tmp”,则为用户提供潜在恢复数据的机会。 如果还存在“example.dat”,则不要在没有明确的用户常量的情况下覆盖它。 但是,我做了一些小小的研究后发现,除了操作系统caching(我可以用文件刷新方法覆盖)之外,有些磁盘驱动器仍然可以在内部caching,甚至可能对操作系统说谎,因此4可以完成,写入不实际写入,如果系统closures,我已经丢失了我的数据… 我不确定磁盘问题实际上是由应用程序解决的,但是正确的事情上面的一般规则是? 我应该保留一个旧的文件恢复副本,以确保更长的时间,有关这些事情的指导方针是什么(例如,可接受的磁盘使用情况,用户应该select,放置这些文件的位置等)。 另外我应该如何避免潜在的冲突用户和其他程序“example.dat.tmp”。 我记得有时候从其他软件中看到“〜example.dat”,这是一个更好的约定吗?

DirectShow ISampleGrabber:样本颠倒,颜色通道反转

我必须使用MS DirectShow从相机捕捉video帧(我只想要原始像素数据)。 我能够构buildgraphics/滤波器networking(捕获设备filter和ISampleGrabber)并实现callback(ISampleGrabberCB)。 我收到适当大小的样本。 但是,它们总是颠倒(垂直翻转,即不旋转),颜色通道是BGR顺序(不是RGB)。 我试图将BITMAPINFOHEADER中的biHeight字段设置为正值和负值,但没有任何效果。 根据MSDN文档,ISampleGrapper :: SetMediaType()忽略video数据的格式块。 这里是我看到的(用不同的相机logging的,不是DS),以及DirectShow ISampleGrabber给我的东西:“RGB”实际上分别是红色,绿色和蓝色: 我正在使用的代码示例略有简化: // Setting the media type… AM_MEDIA_TYPE* media_type = 0 ; this->ds.device_streamconfig->GetFormat(&media_type); // The IAMStreamConfig of the capture device // Find the BMI header in the media type struct BITMAPINFOHEADER* bmi_header; if (media_type->formattype != FORMAT_VideoInfo) { bmi_header = &((VIDEOINFOHEADER*)media_type->pbFormat)->bmiHeader; } else if (media_type->formattype != […]

我如何正确安装C编译器来安装Windows的Python包?

我相信我没有正确安装我的C编译器。 我试图在我的Windows 8机器上安装一些Python 2.7包。 我不断收到以下错误: “RuntimeError:损坏的工具链:无法链接一个简单的C程序”。 Python已经正确安装,并且一直运行良好。 我一直在使用“virutalenv”包,并在虚拟环境中工作。 然后,我尝试安装Cygwin,MinGW和MS Visual Studios 2012,其中没有一个似乎在virtualenv中工作。 我不知道我在做什么错,任何帮助将是伟大的。 谢谢,吉米

Dev C ++控制台窗口属性

我在Windows7上使用Dev C ++ v5.6.1 IDE。 我写了一个C代码,其中有数百行显示在屏幕上的输出。 Console Windows的缓冲区大小很小,我无法查看最初的printf语句。 我试过从“属性”选项更改,但没有帮助。 我在哪里可以find增加控制台窗口缓冲区大小的选项。

易失性和caching行为

我读过post C volatilevariables和Cache Memory 但是我很困惑。 题: 操作系统是否会照顾自己 程序员必须以这样的方式编写程序:variables不应该像提到variables一样被放入caching中,如_Uncached。 问候 学习者

在设备驱动程序中使用stdlib.h

我试图写一个设备驱动程序,我需要在驱动程序中使用system()函数。 要使用system()我们需要包含<stdlib.h> ,这个dosnt似乎是从驱动程序中运行的。 它说没有find这样的文件或目录。 是否有替代stdlib.h设备驱动程序? 或system()的替代?

为什么我们不能通过Linux中的system()系统调用来更改目录?

system ("cd .."); 这不会产生任何错误,但也没有任何意义。 为什么?

用于由MPI创build的进程的共享内存访问控制机制

我有一个由多个进程使用的共享内存,这些进程是使用MPI创build的。 现在我需要一个机制来控制这个共享内存的访问。 我知道named semaphore和flock机制可以用来做这个,但只是想知道MPI是否提供了共享内存使用的任何特殊的locking机制? 我在Linux下工作。