草庐IT

String转byte

全部标签

C++ 程序在执行 std::string 分配时总是崩溃

我一直在尝试调试崩溃的应用程序中的崩溃(即断言*glibcdetected*free():invalidpointer:0x000000000070f0c0***)当我尝试对字符串进行简单赋值时。请注意,我正在使用gcc4.2.4优化级别设置为-O2的linux系统上进行编译。使用-O0应用程序不再崩溃。例如std::stringabc;abc="testString";但如果我按如下方式更改代码,它就不会再崩溃了std::stringabc("testString");所以我又挠头了!但有趣的模式是,崩溃在应用程序中稍后移动,AGAIN在另一个字符串。我发现应用程序在字符串分配时不断

c++ - 将空终止的 const char* 字符串数组转换为 std::vector< std::string >

我有一个VisualStudio2008C++函数,我在其中获得了一个空终止字符串数组constchar*以及该数组中字符串的数量。我正在寻找一种巧妙的方法来转换constchar*的数组在std::vector///@paramcount-numberofstringsinthearray///@paramarray-arrayofnull-terminatedstrings///@return-avectorofstlstringsstd::vectorConvert(intcount,constchar*array[]);Boost可以,STL可以。

c++ - 为什么 std::string 没有标准定义的文字后缀?

一个简单的问题:为什么C++11不提供“用户”(实际上是标准库)定义的文字来创建std::string,例如autostr="helloworld"s;//strisastd::string与C++一样,Objective-C既支持C风格的字符串,也支持对用户更友好的库类型NSString;然而,与C++不同的是,没有人会混淆两者,因为通过在字符串文字前加上@来创建NSString是微不足道的。事实上,很少看到Objective-C代码的文字没有有@前缀。每个人都知道这样做的方式,使用NSString并继续使用它。C++11用户定义文字允许这样做,事实上Stroustrup的C++11

c++ - 为什么编译器选择 bool 而不是 string 来进行 L""的隐式类型转换?

最近引入了一个方法的重载,应用程序开始失败。终于追踪到,新方法在我没想到的地方被调用了。我们有setValue(conststd::wstring&name,conststd::wstring&value);std::wstringavalue(func());setValue(L"string",avalue);std::wstringbvalue(func2()?L"true",L"false");setValue(L"bool",bvalue);setValue(L"empty",L"");它已更改,以便在存储bool值时我们使用相同的字符串(字符串的内部数据存储)setValu

c++ - 使用带有 std::string 键和 int 键的 std::map 的成本?

我知道单个map查询最多需要log(N)时间。但是我想知道,我已经看到很多使用字符串作为映射键的示例。例如,将std::string作为键关联到映射而不是int的性能成本是多少?std::mapsomeMap;对比std::mapsomeMap;谢谢! 最佳答案 分析算法的渐近性能正在研究必须执行的操作以及它们添加到等式中的成本。为此,您需要首先了解执行的操作是什么,然后评估其成本。在平衡二叉树(映射恰好是)中搜索键需要O(logN)复杂的操作。这些操作中的每一个都意味着比较匹配的键,如果键不匹配则跟随适当的指针(子指针)。这意味着

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