stdstring相关内容

C ++ std :: string是容器吗?

对于某些人来说,这可能是一个简单的问题。但我想知道 std :: string 是否是容器。容器是指类似 std :: vector , std :: list 和 std :: deque 。 因为 std :: basic_string 接受除了整数字符以外的其他类型,但也可以通过使用字符数组进行优化。对我来说还不是很清楚。 它将编译为: #include ..
发布时间:2020-10-08 20:47:39 C/C++开发

std :: string.c_str()返回一个奇怪的字符

在我的项目中,我通常通过指定其文件名来加载纹理。现在,我使此函数 const char * app_dir(std :: string fileToAppend); 返回 main s argv [0] 并通过 fileToAppend 更改应用程序名称。由于无法使用char *来简化字符串操作,因此使用 std :: string 。我的纹理加载器将const char *作为文件名,因此需要切 ..
发布时间:2020-09-30 23:14:05 其他开发

具有u8,char8_t和std :: string的C ++ 20

C ++ 11为我们带来了UTF-8字面量的u8前缀,我认为几年前这很酷,并在代码中添加了以下内容: std :: string myString = u8“●”; 这一切都很好,但是在C ++ 20中却出现了问题似乎可以编译了,因为u8创建了char8_t *,而这与仅使用char的std :: string不兼容。 我应该创建一个新的utf8string吗? ..
发布时间:2020-09-28 02:53:32 C/C++开发

在switch语句中使用字符串-我们站在C ++ 17的什么位置?

我们每个人(大概)都有童年的写作梦想: switch(my_std_string){ 情况“ foo”:do_stuff();打破; case“ bar”:do_other_stuff();打破; 默认值:just_give_up(); } 但这是不可能的,正如对此问题的回答过去的日子(2009年): 为什么switch语句不能应用于字符串? ..
发布时间:2020-09-28 02:04:53 C/C++开发

如何将一个以零开头的整数插入std :: string?

在C ++ 14程序中,为我提供了一个字符串,例如 std :: string s =“ MyFile# ###。mp4“; 以及0到几百之间的整数。 (永远不会超过一千,但要以防万一,请输入四位数。)我想用整数值替换“ #### ”,并用前导所需的零,以匹配'#'字符的数量。修改s或产生这样的新字符串的巧妙的C ++ 11/14方法是什么? 通常我会使用 ..
发布时间:2020-09-28 01:32:06 C/C++开发

在C ++ 11中,将引用/指针返回到std :: string中某个位置的最有效方式是什么?

我正在构建一个文本解析器,该文本解析器使用 std :: string 作为字符串的核心存储。 我知道这不是最佳选择,并且编译器内部的解析器为此使用了优化的方法。在我的项目中,我不介意失去一些性能以换取更多的清晰度和更轻松的维护。 开始时,我将大量文本读入内存,然后对每个文本进行扫描字符来构建一组有序的令牌,它是一个简单的词法分析器。目前,我正在使用 std :: string 表示令 ..
发布时间:2020-09-27 20:50:15 C/C++开发

如何清除(用随机字节覆盖)std :: string内部缓冲区?

考虑一个场景,其中 std :: string 用于存储一个秘密。一旦消耗掉它并且不再需要它,最好将其清理,即覆盖包含它的内存,从而隐藏 secret 。 std :: string 提供函数 const char * data()返回指向的指针(因为C + +11)连续记忆。 现在,由于内存是连续的,并且由于作用域结束,变量将在清除后立即销毁,这样可以安全: char *可修 ..
发布时间:2020-09-27 20:37:22 C/C++开发

为什么std :: string(“ \x00”)报告的长度为0?

我有一个需要对字符串进行编码的函数,该函数必须能够接受0x00作为有效的“字节”。我的程序需要检查字符串的长度,但是如果我将“ \x00” 传递给 std :: string length()方法返回0。 即使字符串是一个空字符? 解决方案 您传入的是空字符串。使用 std :: string(1,'\0')代替。 或 std :: string {'\0'} (感谢@ zet ..
发布时间:2020-09-27 20:23:24 C/C++开发

std :: string :: assign与std :: string :: operator =

我很早以前就用Borland C ++编写代码,现在我正试图理解“新”(对我)C + 11(我知道,我们在2015年,有一个c + 14 ...但是我'正在从事C ++ 11项目) 现在,我有几种方法可以给字符串赋值。 #include #include int main() { std :: string test1; std ..
发布时间:2020-09-27 18:37:34 其他开发

依靠空std :: string的索引0是否不好?

std :: string my_string =“”; char test = my_string [0]; 我注意到这不会崩溃,并且每次测试时,是0。 我可以依靠它始终为0吗?还是随意? 这是不好的编程吗? 编辑: 从某些注释中,我收集到一些关于此用途的误解。 此操作的目的不是检查字符串是否为空。 不需要检查字符串是否为空。 ..
发布时间:2020-09-27 06:21:21 C/C++开发

毕竟std :: string会最终成为我们的编译时字符串吗?

许多开发人员和库作者已经在编译时字符串方面苦苦挣扎了好几年了,因为标准(库)字符串 std :: string 要求动态内存分配,而不是constexpr。 因此,我们有很多问题和博客文章,介绍如何正确获取编译时字符串: 方便地在C ++中声明编译时字符串 在编译时将模板中的编译时字符串连接起来? C ++编译时字符串操作 (异地)使用constexpr的编译时字符串 我们 ..
发布时间:2020-09-27 03:18:24 C/C++开发

如何将wchar_t *转换为std :: string?

我将班级更改为使用std :: string(基于我得到的答案此处,但是我拥有的函数返回wchar_t *。如何将其转换为std :: string? 我尝试过: std :: string test = args.OptionArg(); ,但显示错误C2440:“正在初始化”:无法从“ wchar_t *”转换为“ std :: basic_string ..
发布时间:2020-09-27 00:59:55 C/C++开发