草庐IT

c++ - 如何修剪存储在 std::set 中的字符串?

我正在使用VS2012开发MFC应用程序。在此应用程序中,我想清理CString的容器。使用Trim()对象成员函数。首先,我使用了std::vector作为容器,如下图MCVE:#define_AFXDLL//CString#include//CString#includeintmain(){std::vectorv;v.push_back(_T("Test"));v.begin()->Trim();return0;}这会按预期进行编译和工作。然后,我想更换std::vector通过std::set.因此,我包括了#include而不是#include并更改了main()如下:int

windows - 类未注册 HRESULT 0x80040154

我在WindowsVista上使用.NETFramework6.0版。我最近安装了一个显示图表的程序。当我打开它时,我收到一条来自Microsoft.NET框架的错误消息:Classnotregistered(exceptionfromHRESULT:0x80040154(REGDB_E_CLASSNOTREG)).我该如何解决这个问题?谢谢。 最佳答案 简单的答案是注册类(class)。(如果您知道哪个类未注册,以及它在哪个库中。)但像这样的错误是一个很大的失败,他们没有告诉您这些重要的细节。我认为您最好的选择是卸载软件,然后仔细

c++ - 将 std::cout 重定向到新创建的控制台

这个问题在这里已经有了答案:Redirectingcouttoaconsoleinwindows(11个答案)关闭8年前。当您在Windows下创建C++控制台应用程序时,您会自动获得为您创建的控制台窗口,并将std::cout输出到控制台窗口。我有一个GUI应用程序,我还想为其创建一个控制台窗口。我可以使用AllocConsole()函数创建控制台窗口,但如何将std::cout重定向/附加到控制台,以便输出显示在控制台窗口中?

c++ - std::regex_replace 给了我意想不到的结果

我在C++Windows项目(VisualStudio2010)中使用std::regex_replace。代码如下所示:std::stringstr("http://www.wikipedia.org/");std::regexfromRegex("http://([^@:/]+\\.)?wik(ipedia|imedia)\\.org/",std::regex_constants::icase);std::stringfmt("https://$1wik$2.org/");std::stringresult=std::regex_replace(str,fromRegex,fmt)

c++ - 使用 C++/STL 将 std::vector<CString> 展平为 multi_sz 的推荐方法是什么

我想将存储在std::vector中的字符串列表(ATL::CString)写入Windows注册表中的REG_MULTI_SZ值。我知道如何在普通C中执行此操作(迭代一次以获得总长度,分配一个缓冲区,将字符串复制到由“\0”分隔的缓冲区)。知道我使用STL尝试了以下操作(抱歉,我必须将VS2010与“foreach”一起使用):std::vectormultiline_sz;foreach(CStringentryinmyStringList){TCHAR*buf=entry.GetBuffer();multiline_sz.insert(multiline_sz.end(),&bu

c - PEB地址(0x07FF DA00)是加载进程基地址的RV吗?

我正在尝试使用C/ASM中的PEB结构,但在此之前我想了解一些基础知识。我在某处读到,大多数进程在地址0x07FFDA00处都有它们的PEB。现在这个地址是相对于进程基地址的,即(0x00400000+0x07FFDA00==PEBbaseaddr)?因为所有进程当然不能将它们的PEB指向这个地址。 最佳答案 Becauseallprocessescan'thavetheirPEBtothisaddressofcourse.如果0x07FFDA00和0x00400000都是虚拟地址,那么所有进程都可以在该地址拥有它们的PEB。正如您

c++ - std::istream 上的 Windows IStream 接口(interface)

在Windows上的C++中,是否有任何简单的方法可以为现有std::stream对象创建(COM)IStream接口(interface)?一个示例是使用IWICStream::InitializeFromIStream()从std::cin读取图像。 最佳答案 没有标准的实现。您需要编写实现IStream接口(interface)并根据需要在内部委托(delegate)给std::stream的类(或寻找第三方类)。但是,您可能无法实现IStream::Stat(),它通常用于检索流的数据大小。对于std::cin,您不知道提供

c++ - 预分配 std::string 以传递到 WinAPI

我很好奇下面的代码是否正确?我在较旧版本的VS2008上运行它,用于仅限Windows的C++项目。我的目标是在std::string中预分配内存,以将其传递到知道所需字符大小的WinAPI中://'hWnd'=windowhandleintnLn=GetWindowTextLength(hWnd);//Textvariabletocollecttextinstd::wstringstr;str.reserve(nLn);GetWindowText(hWnd,(LPTSTR)str.data(),nLn);我在这里担心的是str.data()返回constwchar_t*并且GetWi

asp.net - WaHostBootstrapper 不断退出并出现错误 WapXmlReadRoleModel=0x1

这让我发疯。我有一个Azure应用程序,它曾经在安装在W2012R2VM上的计算机模拟器中运行良好,但在更新后(不记得是VS、Azure还是Windows),它无法再启动。即使是旧的、稳定的提交也没有开始。我的调查发现WaHostBootstrapper启动并几乎立即退出,而没有加载我的应用程序。WaHostBootstrapper.log仅显示:[00008268:00008396,2016/02/13,04:29:02.785,ERROR]有什么线索可以找出根本原因吗? 最佳答案 在安全更新KB3126593中引入了Win201

.net - 从 system::String 转换为 std::string

要将system::String转换为std::string,我使用以下代码:IntPtrp=Marshal::StringToHGlobalAnsi(PORT);stringnewString=static_cast(p.ToPointer());Marshal::FreeHGlobal(p);但是,我拿到代码的地方使用IntPtrp=Marshal::StringToHGlobalAnsi(PORT);char*newString=static_cast(p.ToPointer());Marshal::FreeHGlobal(p);但是出于某种原因,如果我执行char*版本,我会在