草庐IT

basic_handle

全部标签

c++ - `std::basic_string::operator[]` 能否返回一个 "distant"保护页 nul 终止符?

所以,operator[]没有直接说s[s.size()]必须是s[s.size()-1]之后的字符在内存中。它的措辞似乎是为了避免做出这种说法。但是s.data()指出s.data()+k==&s[k],和s.data()必须返回一个指针。忽略使用&的看似标准的缺陷在CharT以上而不是std::addressof,是否可以自由返回不同的CharT(比如,一个在protected页面上,或在ROM中)对于s[s.size()]在第一次调用s.data()之前?(很明显,它可以将缓冲区安排在一个只读页面上,上面有一个零;我说的是另一种情况)明确地说:据我所知,如果s.data()永远不

c++ - 如何像 std::string 一样为自定义 std::basic_string<> 特化类定义哈希类?

我的专业是std::basic_string,比如说,string_t,它与std::string相同相同除了第三个模板参数是我的自定义分配器。std::basic_string问题:我应该如何使用C++标准库中已经提供的散列仿函数为这个特化定义一个散列仿函数类?我知道如何定义哈希仿函数,但我不知道如何利用现有的std::hashstd中的仿函数定义我的自定义一个。我对自己编写哈希操作犹豫不决,因为我知道这是在重新发明轮子,而且不太可能比std::hash更好。,因为string_t之间的唯一区别和std::string只是分配器。cppreference有一些例子,但它们对我帮助不大

c++ - Visual Studio : how to handle project dependencies right?

我正在编写一个程序(用C++),它需要多个VS项目,我想将它们放入同一个VS解决方案中。我正在使用VisualStudio2010。这里只是想要的架构:我正在为我的项目使用第3方库(A),我有所有的头文件和.lib文件,我用源代码编译。有了这个库,我正在编写自己的类和函数。那是我的项目(B)。然后我想为用户开发两个界面:命令行界面(C1)和GUI界面(C2),它们使用(B)中定义的类和函数。A我是VisualStudio的新手,我不知道如何正确处理这些依赖项。我应该使用项目依赖项(在解决方案属性中)还是引用(在项目属性中)?事实上,我不确定依赖项和引用到底在做什么。我应该将B编译成某个

java - 从 basic_string 到 jstring 的转换

我正在使用basic_string类型并需要将其转换为jstring以通过JNI层。我想知道最好的方法是什么。我有一个函数可以给我std::string来self的basic_string类型,所以对此的回答也很酷。干杯。 最佳答案 您需要将std::basic_string转换为UTF-8。查看您的wstring->string转换的作用。Sun有一个JNI教程,展示了如何将char*转换为jstring(使用一些UTF转换例程)。您可以使用wstring->string,然后将string.c_str()传递给NewString

c++ - basic_string 文字在编译时速度更快还是处理得更好?

在浏览C++14/C++1y(n3690)草案时,我注意到在第21.7节中引入了basic_string文字后缀:inlinenamespaceliterals{inlinenamespacestring_literals{//21.7,suffixforbasic_stringliterals:stringoperator""s(constchar*str,size_tlen);u16stringoperator""s(constchar16_t*str,size_tlen);u32stringoperator""s(constchar32_t*str,size_tlen);wstr

c++ - 是否可以根据其位置更改 QSlider handle 的颜色?

我非常了解如何通过样式表自定义QSlider,但我想知道是否可以执行以下操作:我希望slider的handle从蓝色变为黄色。当设置在左边时,它是蓝色的;当您将它向右移动时,它会出现从蓝色到黄色的渐变。如果可以通过样式表实现,怎么做?如果不能,我如何在QSlider的子类的paintEvent中实现它? 最佳答案 实际上你真的不需要做任何花哨的事情,股票QSlider已经有valueChanged(int)信号,所以你可以将它连接到一个函数根据位置混合两种颜色并设置样式颜色。这是一个最小的例子:staticQColoroperato

c++ - 带空字符的 STL basic_string 长度

为什么您可以在std::basic_string中插入一个'\0'字符并且.length()方法不受影响,但是如果您调用char_traits::length(str.c_str())你得到字符串的长度直到第一个'\0'字符?例如stringstr("abcdefgh");cout::length(str.c_str());//4 最佳答案 好问题!原因是C风格的字符串被定义为以空字节结尾的字节序列。当您使用.c_str()从C++中获取C风格的字符串std::string,然后您将返回C++字符串存储的序列,其后有一个空字节。当您

c++ - 错误 C2248 : 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'

收到此错误,我很确定它在operatorvoidCRational::print()const{print(cout);}voidCRational::print(ostream&sout)const{if(m_denominator==1)cout 最佳答案 您需要通过引用而不是值返回ostream。它试图调用构造函数。也可以传递'a'作为引用:ostream&operator我还注意到打印方法可能是错误的。它有sout作为流的名称传递,但随后直接使用cout实现。应该是voidCRational::print(ostream&s

c++ - 如何在 Windows HANDLE 中使用 C++ 标准智能指针?

我想知道是否有办法使用unique_ptr使用Windows句柄?我正在考虑替换std::default_delete具体handle_trats那叫CloseHandle.问题是HANDLE定义为void*unique_ptr不会编译为sizeof(void)未定义。到目前为止,我只看到两种可能性:为HANDLE创建一个包装类并像这样使用它:unique_ptr.这几乎使unique_ptr本身没用。使用HANDLE类似于unique_ptr的特定智能指针类.您认为什么是更好的选择?你有什么建议?问题可以扩展为COMIUnknown指针-可以CComPtr被任何标准智能指针取代?

c++ - 如何将 std::basic_string 类型转换为 char 类型的数组?

运行此代码时出现以下错误:syslog(LOG_ERR|LOG_USER,"%s",errorString);cannotconvert‘conststring{akaconststd::basic_string}’to‘constchar*’for>argument‘2’to‘voidsyslog(int,constchar*,...)’inServer.cpp/PeCounterline478C/C++Problem我正在守护程序,当使用cout输出到stdio时,errorString值打印得很好,但在使用syslog调用时不会打印。将std::basic_string(char