这个问题可能很愚蠢但如果我了解这种行为会很好.
我试着打印
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
使用一个简单的程序
char testme [] ="\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\0";
cout<<"testme:"<<testme<<endl;
Run Code Online (Sandbox Code Playgroud)
这种情况下的输出是
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Run Code Online (Sandbox Code Playgroud)
我打算打印64"\"字符,而输出是32"\"字符.
似乎有一些我缺少的东西,因为输出正好是一半.
编辑:我问的原因是因为,我必须^ "\"另一个字符用于HMAC加密,我看到一些奇怪的事情.
小智 8
在C++ 11中你可以这样做......
char testme [] =R"(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\0)";
cout<<"testme:"<<testme<<endl;
Run Code Online (Sandbox Code Playgroud)
R"(...)"for Raw Character Strings...要在字符串文字中表示反斜杠(),我们必须在它前面加一个反斜杠.为防止错误(反斜杠太多),C++提供了raw string literals...
这称为转义,是一种将某些字符插入字符串的机制.例如,如果要在字符串中插入引号,则需要将其转义.
char testme [] ="I am a so called \"programmer\".";
Run Code Online (Sandbox Code Playgroud)
还有\n,\t和其他代码.但是,这适用于\它自己,因为您可能希望能够使用一个字符串,\n而不将其转换为换行符.
char testme [] ="This is a backslash followed by the letter n: \\n";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2256 次 |
| 最近记录: |