[ Web Proxy ]
URL:
Viewing: https://ru.cppreference.com/cpp/language/string_literal [Back]  [Original]

cppreference.com
cppreference.com

cppreference.com
 
C++
(C++20)
(C++20)
(C++11)
(C++20)
/
(C++11)
(C++11)
(C++11)
(C++17)
 
 
(lvalue, rvalue, xvalue)
( )
-(C++11)
,
(C++11)
(C++11)
:
:  
:
:
:
:
:
a=b, a+=b, a-=b, a*=b, a/=b, a%=b, a&=b, a|=b, a^=b, a<<=b, a>>=b
++a, --a, a++, a--
+a, -a, a+b, a-b, a*b, a/b, a%b, ~a, a&b, a|b, a^b, a<<b, a>>b
a||b, a&&b, !a
a==b, a!=b, a<b, a>b, a<=b, a>=b, a<=>b ( C++20)
a[b], *a, &a, a->b, a.b, a->*b, a.*b
a(...), a,b, a?b:c
new
delete
throw
alignof
sizeof
sizeof...(C++11)
typeid
noexcept(C++11)
(C++17)
(C++20)
const_cast
static_cast
reinterpret_cast
dynamic_cast
: (T)a, T(a), auto(a), auto{a} ( C++23)
 

"-s- ()" (1)
R"-d- ()(-r- ())-d- ()" (2) ( C++11)
L"-s- ()" (3)
LR"-d- ()(-r- ())-d- ()" (4) ( C++11)
u8"-s- ()" (5) ( C++11)
u8R"-d- ()(-r- ())-d- ()" (6) ( C++11)
u"-s- ()" (7) ( C++11)
uR"-d- ()(-r- ())-d- ()" (8) ( C++11)
U"-s- ()" (9) ( C++11)
UR"-d- ()(-r- ())-d- ()" (10) ( C++11)

-s- s- 
s-
-s- , ", \
-d- d-  16
d- , ,
-r- r- , , )-d-"
r-

  
(1,2)     const char[N]
(3,4) const wchar_t[N]
(5,6) UTF-8

const char[N]

( C++20)

const char8_t[N]

( C++20)
UTF-8
(7,8) UTF-16 const char16_t[N] UTF-16
(9,10) UTF-32 const char32_t[N] UTF-32

, , N , .

UTF-8 ( C++11) .

. , .

.

bool b = "bar" == 3 + "foobar"; //   true  false,  

const char* pc = "";
char* p = const_cast<char*>(pc);
p[0] = 'M'; //  

, R ( (2,4,6,8,10)). , - -d- ( )-d- . -d- , -d-.

// OK:     ,
//  "\\"
R"(\)";

// OK:    \n,
//  "\\n\\n\\n\\n"
R"(\n\n\n\n)";

// OK:    ,   
//    ,
//  ")\"\"("
R"-()""()-";

// OK:  "\n)\\\na\"\"\n"
R"a(
)\
a""
)a";

// OK:  "x = \"\"\\y\"\""
R"(x = ""\y"")";

// R"<<(-_-)>>"; // :      
// R"-()-"-()-"; // : )-"     
( C++11)

, s-  r-  ( C++11) (U+0000) :

1) -s- , r- , ( C++11) , , , , , . , .
, , , , .
2) v , , , T ( ):
  • v T, v.
  • , (1) (3), ( C++11) v T, T, \(v \bmod 2^S\)v mod 2S
    , S T.
  • .
, .
3) .
, , , .

, , 6 ( ). "," " !" () ", !". ( ), ( ).

, , , , , , .

L"x = %" PRId16 //   4, PRId16   "d"
                 //   6, L"x = %"  "d"  L"x = %d"

UTF-8 , .

( C++11)


, . ( .)

( C++11)
( C++23)

.

( C++23)

, :

, ( , ) ( C++11).

( C++26)

.

, . , , .

( C++26)

. char str[] = "foo";, str "foo".

char* wchar_t* C, char[N] wchar_t[N]. .

( C++11)

CharT*. , (, const_cast).

( C++11)

, : , , .

const char* p = "abc\0def"; // std::strlen(p) == 3,     8

, . :

//const char* p = "\xfff"; // :   
                           //  
const char* p = "\xff""f"; // OK:   const char[3],  {'\xff','f','\0'}
__cpp_char8_t 202207L (C++20) char8_t ( (unsigned) char UTF-8)
__cpp_raw_strings 200710L (C++11)
__cpp_unicode_literals 200710L (C++11)

#include <iostream>

char array1[] = "Foo" "bar";
//  ,  
char array2[] = { 'F', 'o', 'o', 'b', 'a', 'r', '\0' };

const char* s1 = R"foo(

  
)foo";
//  ,  
const char* s2 = "\n\n  \n";
//  ,  
const char* s3 = "\n"
                 "\n"
                 "  \n";

const wchar_t* s4 = L"ABC" L"DEF"; // ok,  ,  
const wchar_t* s5 = L"ABCDEF";
const char32_t* s6 = U"GHI" "JKL"; // ok,  ,  
const char32_t* s7 = U"GHIJKL";
const char16_t* s9 = "MN" u"OP" "QR"; // ok,  ,  
const char16_t* sA = u"MNOPQR";

// const auto* sB = u"" U"";
        //  C++23     
        // ;    C++23

const wchar_t* sC = LR"--(STUV)--"; // ok,   

int main()
{
    std::cout << array1 << ' ' << array2 << '\n'
              << s1 << s2 << s3 << std::endl;
    std::wcout << s4 << ' ' << s5 << ' ' << sC
               << std::endl;
}

:

Foobar Foobar


  


  


  

ABCDEF ABCDEF STUV

C++:

CWG 411 C++98
CWG 1656 C++98 ,
,
CWG 1759 C++11 UTF-8 ,
char
char
UTF-8
CWG 1823 C++98 , ,

CWG 2333 C++11 ,
UTF-8/16/32
WG C++98

WG C++98 1. ,
    
2. ,
     , ,
     ,
    
1.
    
    [1]
2. ,
    
    
     ,
    
  1. P1854R4 DR, .

  • C++23 (ISO/IEC 14882:2023):
  • 5.13.5 [lex.string]
  • C++20 (ISO/IEC 14882:2020):
  • 5.13.5 [lex.string]
  • C++17 (ISO/IEC 14882:2017):
  • 5.13.5 [lex.string]
  • C++14 (ISO/IEC 14882:2014):
  • 2.14.5 [lex.string]
  • C++11 (ISO/IEC 14882:2011):
  • 2.14.5 [lex.string]
  • C++03 (ISO/IEC 14882:2003):
  • 2.13.4 [lex.string]
  • C++98 (ISO/IEC 14882:1998):
  • 2.13.4 [lex.string]

(C++11) []

Web Proxy Viewer  |  New URL  |  Original Page