stdstring相关内容
我能否以某种方式设计我的日志记录功能,使其可以使用C ++接受以下形式的串联字符串? int i = 1; customLoggFunction(“ My Integer i =”
..
对于某些人来说,这可能是一个简单的问题。但我想知道 std :: string 是否是容器。容器是指类似 std :: vector , std :: list 和 std :: deque 。 因为 std :: basic_string 接受除了整数字符以外的其他类型,但也可以通过使用字符数组进行优化。对我来说还不是很清楚。 它将编译为: #include
..
我确定我做错了什么,但是对于我一生,我不知道该怎么办!请考虑以下代码: cerr
..
main.cpp:在函数'void PrintVector(std :: vector&& ;, bool)'中: main.cpp:16:41:错误:没有上下文类型信息的重载函数 std :: cout
..
#include 使用命名空间std; int main() { string s; //没有警告 int i; //警告C4101 返回0; } 为什么Visual Studio会警告我有关未使用的内容变量 i 但在示例中不是大约 s 吗? 我假设编译器不确定字符串构造函数的副作用。这是不显示警告的原因吗? 我能以某
..
在我的项目中,我通常通过指定其文件名来加载纹理。现在,我使此函数 const char * app_dir(std :: string fileToAppend); 返回 main s argv [0] 并通过 fileToAppend 更改应用程序名称。由于无法使用char *来简化字符串操作,因此使用 std :: string 。我的纹理加载器将const char *作为文件名,因此需要切
..
C ++ 11为我们带来了UTF-8字面量的u8前缀,我认为几年前这很酷,并在代码中添加了以下内容: std :: string myString = u8“●”; 这一切都很好,但是在C ++ 20中却出现了问题似乎可以编译了,因为u8创建了char8_t *,而这与仅使用char的std :: string不兼容。 我应该创建一个新的utf8string吗?
..
我们每个人(大概)都有童年的写作梦想: switch(my_std_string){ 情况“ foo”:do_stuff();打破; case“ bar”:do_other_stuff();打破; 默认值:just_give_up(); } 但这是不可能的,正如对此问题的回答过去的日子(2009年): 为什么switch语句不能应用于字符串?
..
在C ++ 14程序中,为我提供了一个字符串,例如 std :: string s =“ MyFile# ###。mp4“; 以及0到几百之间的整数。 (永远不会超过一千,但要以防万一,请输入四位数。)我想用整数值替换“ #### ”,并用前导所需的零,以匹配'#'字符的数量。修改s或产生这样的新字符串的巧妙的C ++ 11/14方法是什么? 通常我会使用
..
多年来,在Visual Studio 2005和2008中,我一直在使用简单的char缓冲区类。 我今天转换为VS 2013,并且在不同情况下遇到了模棱两可的转换错误。我已删除了不需要的代码部分: #include class ACP { public: ACP(const char * const init):ourStr _(_ strdup(ini
..
我正在尝试创建一个函数,该函数接受可变数量的std :: string参数并使用它格式化字符串。 示例: Test :: formatLine(const string :: format,...) { const std :: string缓冲区; va_list args; va_start(args,format); vsprintf(buffer.c_str,
..
按照 https://stackoverflow.com/a/11311786/890753 中的@EvanED,我创建了一个gdb命令 newstr 创建一个新的std :: string并将其放在gdb便利变量中: 定义newstr set($ arg0)=(std :: string *)malloc(sizeof(std :: string)) 调用($ arg0)-> basi
..
我正在构建一个文本解析器,该文本解析器使用 std :: string 作为字符串的核心存储。 我知道这不是最佳选择,并且编译器内部的解析器为此使用了优化的方法。在我的项目中,我不介意失去一些性能以换取更多的清晰度和更轻松的维护。 开始时,我将大量文本读入内存,然后对每个文本进行扫描字符来构建一组有序的令牌,它是一个简单的词法分析器。目前,我正在使用 std :: string 表示令
..
考虑一个场景,其中 std :: string 用于存储一个秘密。一旦消耗掉它并且不再需要它,最好将其清理,即覆盖包含它的内存,从而隐藏 secret 。 std :: string 提供函数 const char * data()返回指向的指针(因为C + +11)连续记忆。 现在,由于内存是连续的,并且由于作用域结束,变量将在清除后立即销毁,这样可以安全: char *可修
..
我有一个需要对字符串进行编码的函数,该函数必须能够接受0x00作为有效的“字节”。我的程序需要检查字符串的长度,但是如果我将“ \x00” 传递给 std :: string length()方法返回0。 即使字符串是一个空字符? 解决方案 您传入的是空字符串。使用 std :: string(1,'\0')代替。 或 std :: string {'\0'} (感谢@ zet
..
我很早以前就用Borland C ++编写代码,现在我正试图理解“新”(对我)C + 11(我知道,我们在2015年,有一个c + 14 ...但是我'正在从事C ++ 11项目) 现在,我有几种方法可以给字符串赋值。 #include #include int main() { std :: string test1; std
..
使用C ++ 11,Ubuntu 14.04,GCC默认工具链。 此代码失败: constexpr std :: string constString =“ constString”; 错误:类型'const string {aka const std :: basic_string }' constexpr变量'constString'不是文字的...因
..
std :: string my_string =“”; char test = my_string [0]; 我注意到这不会崩溃,并且每次测试时,是0。 我可以依靠它始终为0吗?还是随意? 这是不好的编程吗? 编辑: 从某些注释中,我收集到一些关于此用途的误解。 此操作的目的不是检查字符串是否为空。 不需要检查字符串是否为空。
..
许多开发人员和库作者已经在编译时字符串方面苦苦挣扎了好几年了,因为标准(库)字符串 std :: string 要求动态内存分配,而不是constexpr。 因此,我们有很多问题和博客文章,介绍如何正确获取编译时字符串: 方便地在C ++中声明编译时字符串 在编译时将模板中的编译时字符串连接起来? C ++编译时字符串操作 (异地)使用constexpr的编译时字符串 我们
..
我将班级更改为使用std :: string(基于我得到的答案此处,但是我拥有的函数返回wchar_t *。如何将其转换为std :: string? 我尝试过: std :: string test = args.OptionArg(); ,但显示错误C2440:“正在初始化”:无法从“ wchar_t *”转换为“ std :: basic_string
..