草庐IT

c++ - 在 C++ 中正确使用/包含 uint64_t

这个问题在这里已经有了答案:vs(3个回答)关闭5年前。作为引用,我在C++11中编译。我开始使用棋盘的位图表示作为以棋子为中心的方法来编写国际象棋引擎。似乎要使用的合适类型是uint64_t,但是,在网上搜索了很多之后,我有点不确定这里的“最佳实践”。我开始为游戏板定义.hpp文件。首先,我对不同代码似乎表现出的相似行为感到困惑。#includeuint64_tboard;和#includestd::uint64_tboard;两者都编译得很好。两者有什么区别?这个比那个好吗?此外,我注意到我什至不需要包含cstdint就可以使用uint64_t:#includeuint64_tbo

c++ - 如何在 C++ 中正确地将 vector 写入二进制文件?

首先对不起我的英语不好。我刚加入这个论坛并搜索如何正确地将vector写入二进制文件。我刚从这个论坛得到一个这样的答案(我已经修改了一点):#include#include#include#includeusingnamespacestd;classStudent{public:charm_name[30];intm_score;public:Student(){}Student(constcharname[],constint&score):m_score(score){strcpy(m_name,name);}voidprint()const{cout.setf(ios::left

c++ - 如何在 C++ 中正确地将 vector 写入二进制文件?

首先对不起我的英语不好。我刚加入这个论坛并搜索如何正确地将vector写入二进制文件。我刚从这个论坛得到一个这样的答案(我已经修改了一点):#include#include#include#includeusingnamespacestd;classStudent{public:charm_name[30];intm_score;public:Student(){}Student(constcharname[],constint&score):m_score(score){strcpy(m_name,name);}voidprint()const{cout.setf(ios::left

c++ - 如何在 Qt 中正确实现 "minimize to tray"函数?

如何在Qt中正确实现“最小化到托盘”功能?我在QMainWindow::changeEvent(QEvent*e)中尝试了以下代码,但窗口只是最小化到任务栏,并且客户区在恢复时显示为空白。if(Preferences::instance().minimizeToTray()){e->ignore();this->setVisible(false);}尝试忽略该事件似乎也无济于事。 最佳答案 显然需要一点延迟来处理其他事件(也许有人会发布确切的细节?)。这是我最终做的,效果很好:voidMainWindow::changeEvent(

c++ - 如何在 Qt 中正确实现 "minimize to tray"函数?

如何在Qt中正确实现“最小化到托盘”功能?我在QMainWindow::changeEvent(QEvent*e)中尝试了以下代码,但窗口只是最小化到任务栏,并且客户区在恢复时显示为空白。if(Preferences::instance().minimizeToTray()){e->ignore();this->setVisible(false);}尝试忽略该事件似乎也无济于事。 最佳答案 显然需要一点延迟来处理其他事件(也许有人会发布确切的细节?)。这是我最终做的,效果很好:voidMainWindow::changeEvent(

c++ - 在 Windows 控制台中正确打印 utf8 字符

这是我尝试的方式:#include#includeusingnamespacestd;intmain(){SetConsoleOutputCP(CP_UTF8);//germancharswon'tappearcharconst*text="aäbcdefghijklmnoöpqrsßtuüvwxyz";intlen=MultiByteToWideChar(CP_UTF8,0,text,-1,0,0);wchar_t*unicode_text=newwchar_t[len];MultiByteToWideChar(CP_UTF8,0,text,-1,unicode_text,len);

c++ - 在 Windows 控制台中正确打印 utf8 字符

这是我尝试的方式:#include#includeusingnamespacestd;intmain(){SetConsoleOutputCP(CP_UTF8);//germancharswon'tappearcharconst*text="aäbcdefghijklmnoöpqrsßtuüvwxyz";intlen=MultiByteToWideChar(CP_UTF8,0,text,-1,0,0);wchar_t*unicode_text=newwchar_t[len];MultiByteToWideChar(CP_UTF8,0,text,-1,unicode_text,len);

c++ - 我应该如何在 C++ 的类方法中正确使用 __attribute__ ((format (printf, x, y)))?

我正在尝试为调试打印定义一个类方法,其行为类似于printf:inlinevoiddebug(constchar*fmt,...)__attribute__((format(printf,1,2)))当我用-Wformat或-Wall编译时,这提示:error:formatstringargumentnotastringtype我记得一个类方法声明有一个隐含的this参数,所以我把参数的位置改成了2、3:inlinevoiddebug(constchar*fmt,...)__attribute__((format(printf,2,3)))现在它可以编译了,但看起来参数被移动了,好像t

c++ - 我应该如何在 C++ 的类方法中正确使用 __attribute__ ((format (printf, x, y)))?

我正在尝试为调试打印定义一个类方法,其行为类似于printf:inlinevoiddebug(constchar*fmt,...)__attribute__((format(printf,1,2)))当我用-Wformat或-Wall编译时,这提示:error:formatstringargumentnotastringtype我记得一个类方法声明有一个隐含的this参数,所以我把参数的位置改成了2、3:inlinevoiddebug(constchar*fmt,...)__attribute__((format(printf,2,3)))现在它可以编译了,但看起来参数被移动了,好像t

c++ - 如何在 C++ 中正确访问映射内存而没有未定义的行为

我一直试图弄清楚如何在不调用未定义行为的情况下从C++17访问映射缓冲区。对于这个例子,我将使用Vulkan的vkMapMemory返回的缓冲区。.所以,根据N4659(最终的C++17工作草案),第[intro.object]节(强调):TheconstructsinaC++programcreate,destroy,referto,access,andmanipulateobjects.Anobjectiscreatedbyadefinition(6.1),byanew-expression(8.3.4),whenimplicitlychangingtheactivemembero