string-literals相关内容
我有一个宽字符: const wchar_t * charSet = L“!\”#$%& '()* +, - 。/ 0123456789:;?=??\\\ “ L”@ABCDEFGHIJKLMNOPQRSTUVWXYZ [\\] ^ _ \\\ “ L”`abcdefghijklmnopqrstuvwxyz当我把它传递到文本处理器'\'('\\\\\\\\\\\\\\\\\\\\\\\
..
在C ++中,您可以从 char * 和 std :: string c> const char * ,隐含地假定字符串将首先以 NUL 字符结束。 在C ++中,字符串文字是数组,而且即使字符串文字包含嵌入的 NUL s,也可以使用模板构造函数来获取正确的大小。参见例如下面的玩具实现: #include #include #incl
..
如何在不是字符串文字的地方可靠地static_assert? 例如,在下面的代码中,我试图包装标准assert宏,但静态拒绝不是字符串字面量的消息的任何东西(因为除非是字符串字面量,在assert触发器时不会在运行时显示)。 #include #include #include #define my_a
..
我一直想知道在 ptrToArray 和 ptrToLiteral 中指向的内容之间是否有任何区别示例: constexpr char constExprArray [] =“hello”; const char * ptrToArray = constExprArray; const char * ptrToLiteral =“hello”; 我理解
..
我正在开发一个使用无序容器的(C ++)库。这些都需要哈希(通常是模板结构的特殊化) std :: hash ),它们存储的元素的类型。在我的例子中,这些元素是封装字符串文字的类,类似于 conststr cpp / language / constexpr“rel =”nofollow“>此页面底部。 STL提供了对常量字符指针的专门化,然而,它只计算指针,如这里所述,在“备注”部分中:
..
模板 struct t { static const char * s; }; template const char * t :: s = ...; 其中 ... 为“0 1 2 ... i-1“,例如”0 1 2 3 4“for i == 5 。 这是可能吗? (没有解决方
..
从c ++ 2003 2.13 一个宽字符串文字具有类型“ n const wchar_t “,并且有静态存储持续时间,其中n是下面定义的字符串的大小。 宽字符串文字的大小是转义序列的数目,通用字符名称和其他字符,加上一个用于终止L'\0'。 从c ++ 0x 2.14.5 一个宽字符串文字具有类型“ n const wchar_t 的数组”,其中n是下面定义的字符串
..
char * 和 int * 之间有什么区别?当然,他们是不同的类型,但我怎么能写 char * s1 =“hello world” 为 “hello world” 它不是一个字符,我不能写 * s1 作为 char * s1 = {'h','e' ,'l','o','','w','o','r','l','d'
..
所以,我想要更好地了解C ++中的字符串字面量如何工作。我主要关心的情况下,你将一个字符串字面量的地址分配给指针,并传递它。例如: char * advice =“不要把手放在烤面包机里。 现在让我们说,我只是通过复制指针在程序的持续时间传递这个字符串。当然,这可能不是一个好主意,但我很好奇在幕后将会发生什么。 另一个例子,假设我们创建一个返回字符串字面量的函
..
我知道可以使用字符串字面量初始化一个 char 数组: char arr [] =“foo”; C ++ 11 8.5.2 / 1说: A char 数组(无论是否 char , signed char 或 unsigned char ), char16_t 数组, char32_t 数组或 wchar_t 数组可以通过一个窄字符文字初始化,
..
作为的后续工作它强制要逃避在C和C ++中的制表符字符?(请注意,我不是所述问题的作者)。 我学到了这样的代码被认为是“不良做法”。这些评论似乎暗示着同样的事情。但是,由于某种原因,标准允许这个骗子,所以有人必须发现没有伤害或有一个用例。 不逃避的制表符字符被广泛接受“”\t“使用tab选项卡而不是转义它们('\t ',“\t”)是一种不好的做法,因为: 有一个标签。结果:错误的
..
很多次我看到以下语句: char * ch =“Hello” cout
..
它在C和C ++中有效,因为预处理器或编译器将 连接到相邻的字符串文字。 const char * zStr =“a”“b”; // valid 当字符串文字以 L (宽字符), u (UTF-16), U code> u8 (UTF-8)和原始字符串文字( R“foo(这是一个带双引号的”原始字符串文字“)foo” code>)? 例如,以下是允许的:
..
C ++ 11推出了原始字符串字面值,可以非常有用的代表引用的字符串,有许多特殊符号的文字如Windows文件路径,regex表达式等... std :: string path = R“(C:\teamwork\\\ ew_project\project1)”; //没有标签也不换行! std :: string quoted = R“(”quoted string“)”; st
..
在C ++ 11中引入了一个非常方便的功能,称为原始字符串字面值,它是没有转义字符的字符串。而不是这样写: regex掩码(“\\t [0-9] + \\。 [0-9] + \\t\\\\SUB“); 您可以这样写: regex mask(R“(\t [0-9] + \。[0-9] + \t\\SUB)”); 更易读。但是,请注意字符串周围的额
..
我从所有编译器得到意想不到的结果,我尝试以下(GCC 4.7.2,GCC 4.8.0测试版,ICC 13.0.1,Clang 3.2,VC10): #include int main() { //这将触发 static_assert( std :: is_same :: val
..
我是一个c ++新手(只是oldschool c)。我的儿子要求帮助这个,我无法解释。如果他问我“如何比较字符串”,我会告诉他使用strcmp(),但这不是让我困惑。这是他问的: int main() { cout
..
我发现了 std :: string 和C ++ 0x中的字符串文字之间的令人不安的不一致: #include #include int main() { int i = 0; for(auto e:“hello”) ++ i; std :: cout
..
以下代码是否在C ++ 0x中合法,已弃用或违法? char * p =“foobar” 我最初问这个问题此处作为注释。 解决方案 char * p =“foobar”; 在C ++ 98 / C ++ 03中已弃用, 因此,代码在C ++ 0x中无效。 但是,MinGW g ++ 4.4.1仍然只发出警告,而
..
我想写一个函数,它接受一个字符串字面量 - 并且只有一个字符串文字: template
..