jjzjj

c++ - 实例化 ActiveX 控件后,Excel 中出现 Visual Basic 运行时错误 -2147319765 (8002802b) 的原因是什么?

我已经使用C++创建了一个ActiveX控件。我使用VisualBasic代码在Excel工作表中实例化控件。我只能运行VB脚本一次,后续运行在尝试访问“ActiveSheet”变量时会导致以下运行时错误:MicrosoftVisualBasicRun-timeerror'-2147319765(8002802b)':AutomationerrorElementnotfound我正在尝试找出导致此错误的原因以及如何修复它?作为实验,我尝试创建一个由VisualStudio向导(在VS2005和2008中)生成的简单ActiveX控件。我没有在这个测试用例中添加或修改任何代码。简单的测试

c++ - std::basic_string 的使用

basic_string类显然被设计为通用容器,因为除了c_str()函数外,我在其规范中找不到任何特定于文本的函数。出于好奇,除了存储人类可读的字符数据之外,您是否曾将std::basic_string容器类用于其他用途?我问这个问题的原因是,人们常常不得不在通用或具体之间做出选择。设计者选择将std::basic_string类设为通用类,但我怀疑它是否曾经以这种方式使用过。 最佳答案 它被设计为一个字符串类(因此,例如length()和所有那些查找函数),但是在将STL引入标准库之后,它也被装备为一个STL容器(因此size(

c++ - 使用 fstream 进行 seekp 和 seekg

我注意到了这个奇怪的事情fstreamobj(filename,ios::in);obj.seekp(7);与相同fstreamobj(filename,ios::in);obj.seekg(7);seekg和seekp执行相同的操作并导致相同的结果,尽管我仅指定了ios::in标志为什么他们都使用fstream?seekp和seekg与fstream有什么区别? 最佳答案 basic_fstream源自basic_iostream,basic_iostream源自basic_istream和basic_ostream。因此,bas

c++ - 模板化 ostream 重载歧义错误 : basic_ostream<char> vs const char[]

我正在尝试了解ostream重载。考虑一下#includeusingstd::ostream;enumclassA{a1,a2,a3};templateostream&operator编译时出现如下错误test.cpp:13:17:error:ambiguousoverloadfor‘operator}’and‘constchar[3]’)returnout虽然取消注释正常功能和注释模板版本工作正常。为什么二义性不是在正常功能中,为什么是模板化版本 最佳答案 非模板运算符不会引起任何歧义,因为该运算符本身无法解决此调用:return

c++ - 当非限定名称查找涉及 using-directives 时 [basic.scope.hiding]p2 的解释

在c++中有两种隐藏的名字:1)普通名称隐藏:[basic.scope.hiding]p1(http://eel.is/c++draft/basic.scope.hiding#1):Anamecanbehiddenbyanexplicitdeclarationofthatsamenameinanesteddeclarativeregionorderivedclass([class.member.lookup]).2)隐藏在[basic.scope.hiding]p2(http://eel.is/c++draft/basic.scope.hiding#2)中的特殊名称类型:Aclassn

c++ - 为什么 "gptr"类型的basic_streambuf是char_type*而不是const char_type*?

设置流缓冲的三个“gptr”的basic_streambuf成员,setg声明为:protected:voidsetg(char_type*gback,char_type*gptr,char_type*egptr);我想知道:为什么每个gptr的类型都是char_type*而不是constchar_type*?在这里使用const_cast为这些gptrs使用constchar指针是否安全? 最佳答案 它不是const,因为streambuf接口(interface)不知道您如何填充缓冲区。例如,underflow和uflow方法可

c++ 要包含哪些文件和库?

很多时候我在互联网上找到有用的代码示例。大约一半的时间他们没有指定要包含哪些文件,甚至没有在命令行中使用-l指定要包含哪些库。你通常如何发现它?编辑说明:下面的问题已经解决。可以跳过这篇文章的其余部分。现在,我在尝试编译时遇到了很多错误:53:stringGunzip::gunzip(string&compressed)54:{55:namespaceio=boost::iostreams;56:57:io::filtering_istreamgunzip;58:gunzip.push(io::gzip_decompressor());59:std::istringstreamin_s

c++ - 我应该在 ATL/WTL 中使用 CString、basic_string<TCHAR> 还是其他东西?

我这几天只学了一点ATL(在意识到纯Win32有多痛苦之后),也学了WTL和MFC,据我所见,有很多不同的字符串我可以上课。我曾经做过这样的事情:#include#includenamespacestd{typedefbasic_string_tstring;}然后在我的代码中到处使用_tstring。在学习了一些ATL之后,我了解到在atltmp.h中有一个CString类。显然,在WTL中还有另一个CString类,在MFC中还有一个CString类。我不知道是继续使用ATL还是转而使用WTL、MFC或其他软件。但是现在,我正在将我的Win32代码转换为ATL,我不确定要更改什么以

c++ - 为什么 std::basic_string 不支持通过表达式模板进行连接?

Qt的QString可以通过operator%连接起来,它使用表达式模板预先计算结果字符串的大小并优化对operator+的多个链式调用.参见thisquestionofmine了解更多信息。为什么std::basic_string没有采用类似的结构?C++11甚至允许这样做吗?我只看到优点,很明显,库实现者可以在需要时破坏ABI兼容性(C++11甚至为libstdc++提供了一个很好的理由)。 最佳答案 因为没有人提出标准;除非有人提出建议,否则它不会进入。还因为它可能会破坏现有代码(如果他们使用operator+就是这样)。此外

c++ - 为什么我不能从字符串复制初始化字符串流?

以下代码在GCC、Clang和VisualStudio中失败:#include#includeintmain(){std::strings="hello";//ok,copy-initializationstd::stringstreamss1(s);//ok,direct-initializationstd::stringstreamss2=s;//error}我认为直接初始化有效而复制初始化无效的唯一情况是构造函数是显式的,在这种情况下不是这样。怎么回事? 最佳答案 该构造函数是标记为显式的,因此只能与直接初始化一起使用。§27