草庐IT

clipboard_string

全部标签

c++ - std::string::clear 是否回收与字符串关联的内存?

例如,如果将一个文本文件加载到std::string中,对它做了我需要做的事情,然后对其调用clear(),这会释放保存文本的内存吗?或者我是否最好将其声明为指针,在需要时调用new,并在完成后删除它? 最佳答案 调用std::string::clear()只是将大小设置为零。capacity()不会改变(reserve()比当前保留的内存少也不会改变容量)。如果你想回收分配给字符串的内存,你需要按照以下方式做一些事情std::string(str).swap(str);复制字符串str通常只会保留合理数量的内存,并将其与str的表

c++ - 如何从三个整数(或者可能是一个 git/SVN commit/rev.string)生成一个 constexpr 版本字符串?

说我有constexprconststd::uint8_tmajor=1;constexprconststd::uint8_tminor=10;constexprconststd::uint8_tbugfix=0;我要constexprconstchar*version_string(){...}在此示例中要返回等效于"1.10.0",我该怎么做?我假设我需要这两个,在constexpr中:整数到字符串的转换字符串连接这个问题纯粹是学术性的,除了“这是可能的”之外,我认为实际上拥有它constexpr几乎没有用处。我只是看不出结果如何。我愿意接受适用于GCC4.9和Clang3.4/3

c++ - 为 C++ Variant 类在 string、int、double 之间灵活转换

我正在实现一个变体类(不使用boost),我想知道您将如何处理存储字符串、整数或double中的任何一个并通过ToString将其相应地自动转换为所需类型的情况()、ToInt()或ToDouble()。例如,Varianta=7;coutToXXX函数应该返回您要转换成的类型的引用。现在,我有代码可以返回与最初分配给它相同的类型(Varianta=Int(7);a.ToInt()工作)并在分配类型时引发异常与您要转换为的目标不同。抱歉,不能使用boost。 最佳答案 #include#includeclassVariant{pub

UE4 通过蓝图实现String to Enum

UE4通过蓝图实现StringtoEnumUE4通过蓝图实现StringtoEnum一、创建枚举类型二、遍历枚举值三、字符串相等判断四、条件分支五、输出枚举值UE4通过蓝图实现StringtoEnum枚举类型可以直接转为字符串类型,即枚举值的用户友好名(使用EnumtoString节点),但字符串转为枚举并没有那么简单,需要逐个匹配。思路:遍历枚举类型中每一项枚举值,将当前项转为字符串类型,与给定字符串作比较,如果相等则输出当前枚举值。一、创建枚举类型首先从窗口打开内容浏览器。然后在Blueprints目录下新建Enums文件夹,并创建自己的枚举文件MyEnum。双击枚举文件,为MyEnum添

c++ - 为什么在返回字符串的函数上调用 std::string.c_str() 不起作用?

我有以下代码:std::stringgetString(){std::stringstr("hello");returnstr;}intmain(){constchar*cStr=getString().c_str();std::cout我认为getString()会返回str的拷贝(getString()按值返回);因此,str的拷贝将在main()中保持“事件”状态,直到main()返回。这将使cStr指向一个有效的内存位置:底层char[]或char*(或其他)str由getString()返回,保留在main()中。但是,显然不是这样,因为程序输出的是垃圾。那么,问题是,str

c++ - 为什么 std::string s ("??<") 输出 { 而不是预期的 ??< ?

std::strings("??为什么输出{而不是??我使用的是VisualStudio2008。我假设它正在对其进行编码,但如果发生这种情况,为什么以及调用的编码是什么?这个小%#$^*!让我在我的(单元测试)代码中寻找错误30分钟,然后我才发现我的字符串被破坏了!!:( 最佳答案 因为trigraphs.这些是支持的三字母组,来自维基百科页面:??=→#??/→\??'→^??(→[??)→]??!→|??→{??>→}??-→~对于VisualStudio,根据thedocumentation三字母组默认关闭(足够明智),因此

c++ - vector<string>::iterator - 如何找到元素的位置

我正在使用以下代码在string类型的std::vector中查找字符串。但是如何返回特定元素的位置呢?代码:#include#include#includeusingnamespacestd;intmain(){vectorvec;vector::iteratorit;vec.push_back("H");vec.push_back("i");vec.push_back("g");vec.push_back("h");vec.push_back("l");vec.push_back("a");vec.push_back("n");vec.push_back("d");vec.push

c++ - 为什么在 C++ 中更喜欢 char* 而不是 string?

我是一名尝试编写C++代码的C程序员。我听说C++中的string在安全性、性能等方面优于char*,但有时似乎char*更好选择。有人建议程序员不要在C++中使用char*,因为我们可以做所有char*可以用string做的事情,而且更安全、更快。你曾经在C++中使用过char*吗?具体条件是什么? 最佳答案 使用std::string更安全,因为您无需担心为字符串分配/释放内存。C++std::string类很可能在内部使用char*数组。但是,该类将为您管理内部数组的分配、重新分配和释放。这消除了使用原始指针带来的所有常见风险

python - 导入错误 : DLL load failed when importing win32clipboard in application frozen with cx_Freeze

我有一个导入win32clipboard的Python2.7程序。我试图在WindowsXPSP332位上使用cx_Freeze4.2.3卡住它,以创建安装MSI。我根据cx_Freeze文档制作了一个setup.py,并使用了如下命令:c:\python27\python.exesetup.pybdist_msi当我在另一台没有安装Python2.7的PC上运行它时,我在导入win32clipboard的行上遇到异常:ImportError:DLLloadfailed:Thespecifiedmodulecouldnotbefound.我可以看到win32clipboard.pyd被

使用std :: string作为return类型in BOOST.PYTHON导出功能

我有一个非常简单的示例,即通过boost.python导出到Python(2.7.13)的C++函数。下面的代码:#include#includeconstchar*greet(){return"hello,world!";}BOOST_PYTHON_MODULE(libhello){usingnamespaceboost::python;def("hello_world",greet);}我在OSX10.10.5机器上编译了g++-I~/boost-L~/boost/stage/lib\-L/System/Library/Frameworks/Python.framework/Version