Aracılığıyla paylaş


char_traits Yapısı

char_traits yapısı bir karakterle ilişkili öznitelikleri açıklar.

Sözdizimi

template <class CharType>
struct char_traits;

Parametreler

CharType
Öğe veri türü.

Açıklamalar

Şablon yapısı, türü CharTypeiçin çeşitli karakter özelliklerini açıklar. Sınıf şablonu basic_string ve basic_ios dahil olmak üzere çeşitli iostream sınıf şablonları türündeki CharTypeöğeleri işlemek için bu bilgileri kullanır. Böyle bir öğe türü açık yapı veya imha gerektirmemelidir. Beklenen semantik ile varsayılan bir oluşturucu, kopya oluşturucu ve atama işleci sağlamalıdır. Bit düzeyinde kopya, atamayla aynı etkiye sahip olmalıdır. Yapı char_traits üye işlevlerinin hiçbiri özel durumlar oluşturamıyor.

Tür tanımları

Tür adı Açıklama
char_type Karakter türü.
int_type Tür veya dosya sonu (EOF) karakterini char_type temsil eden bir tamsayı türü.
off_type Bir akıştaki konumlar arasındaki uzaklıkları gösterebilen bir tamsayı türü.
pos_type Bir akıştaki konumları gösterebilen bir tamsayı türü.
state_type Bir akıştaki çok baytlı karakterler için içindeki dönüştürme durumunu temsil eden bir tür.

Üye işlevleri

Üye işlevi Açıklama
atamak Bir karakter değerini diğerine atar.
karşılaştırmak İki dizede belirtilen sayıda karakterle karşılaştırır.
kopya etmek Belirtilen sayıda karakteri bir dizeden diğerine kopyalar. Kullanımdan kaldırıldı. Bunun yerine char_traits::_Copy_s kullanın.
_Copy_s Belirtilen sayıda karakteri bir dizeden diğerine kopyalar.
eof Dosya sonu (EOF) karakterini döndürür.
Eq İki char_type karakterin eşit olup olmadığını sınar.
eq_int_type S olarak int_typetemsil edilen iki karakterin eşit olup olmadığını sınar.
find Bir karakter aralığında belirtilen karakterin ilk oluşumunu arar.
length Bir dizenin uzunluğunu döndürür.
Lt Bir karakterin başka bir karakterden küçük olup olmadığını sınar.
hareket etmek Bir dizideki belirtilen sayıda karakteri başka bir olası örtüşme dizisine kopyalar. Kullanımdan kaldırıldı. Bunun yerine char_traits::_Move_s kullanın.
_Move_s Bir dizideki belirtilen sayıda karakteri başka bir olası örtüşme dizisine kopyalar.
not_eof Bir karakterin dosya sonu (EOF) karakteri olup olmadığını sınar.
to_char_type Bir int_type karakteri ilgili char_type karaktere dönüştürür ve sonucu döndürür.
to_int_type Bir char_type karakteri ilgili int_type karaktere dönüştürür ve sonucu döndürür.

Gereksinimler

Üst bilgi:<dize>

Ad alanı: std

char_traits::assign

Bir karakter değerini başka bir karaktere veya dizedeki bir öğe aralığına atar.

static void assign(char_type& _CharTo,
    const char_type& _CharFrom);

static char_type *assign(char_type* strTo,
    size_t _Num,
    char_type _CharFrom);

Parametreler

_ CharFrom Değeri atanacak olan karakter.

_CharTo
Karakter değeri atanacak öğe.

strTo
İlk öğelerine karakter değerleri atanacak dize veya karakter dizisi.

_Num
Değer atanacak öğe sayısı.

Dönüş Değeri

İkinci üye işlevi, ilk _Num öğelerine _CharFrom değerleri atanmış olan dizeye bir işaretçi döndürür.

Örnek

// char_traits_assign.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function assigning
   // one character value to another character
   char ChTo = 't';
   const char ChFrom = 'f';
   cout << "The initial characters ( ChTo , ChFrom ) are: ( "
        << ChTo << " , " << ChFrom << " )." << endl;
   char_traits<char>::assign ( ChTo , ChFrom );
   cout << "After assigning, the characters ( ChTo , ChFrom ) are: ( "
        << ChTo << " , " << ChFrom << " )." << endl << endl;

   // The second member function assigning
   // character values to initial part of a string
   char_traits<char>::char_type s1[] = "abcd-1234-abcd";
   char_traits<char>::char_type* result1;
   cout << "The target string s1 is: " << s1 << endl;
   result1 = char_traits<char>::assign ( s1 , 4 , 'f' );
   cout << "The result1 = assign ( s1 , 4 , 'f' ) is: "
        << result1 << endl;
}
The initial characters ( ChTo , ChFrom ) are: ( t , f ).
After assigning, the characters ( ChTo , ChFrom ) are: ( f , f ).

The target string s1 is: abcd-1234-abcd
The result1 = assign ( s1 , 4 , 'f' ) is: ffff-1234-abcd

char_traits::char_type

Karakter türü.

typedef CharType char_type;

Açıklamalar

türü, şablon parametresi CharTypeiçin bir eş anlamlıdır.

Örnek

nasıl bildirilip kullanılacağına char_typeilişkin bir örnek için kopya örneğine bakın.

char_traits::compare

İki dizede belirtilen sayıda karakterle karşılaştırır.

static int compare(const char_type* str1,
    const char_type* str2,
    size_t _Num);

Parametreler

str1
Birbiriyle karşılaştırılacak iki dizeden ilki.

str2
Birbiriyle karşılaştırılacak iki dizenin ikincisi.

_Num
Dizelerdeki karşılaştırılacak öğe sayısı.

Dönüş Değeri

İlk dize ikinci dizeden küçükse negatif bir değer, iki dize eşitse 0 veya ikinci dizeden büyükse pozitif bir değer.

Açıklamalar

Dizeler arasındaki karşılaştırma öğeye göre yapılır, önce eşitlik testi yapılır ve ardından dizi testlerindeki bir öğe çifti eşit değilse, daha azı için test edilir.

İki dize bir aralığa eşitse ancak biri diğerinden uzunsa, iki dizenin kısası uzun olandan daha kısadır.

Örnek

// char_traits_compare.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main() {
   using namespace std;

   char_traits<char>::char_type* s1 = "CAB";
   char_traits<char>::char_type* s2 = "ABC";
   char_traits<char>::char_type* s3 = "ABC";
   char_traits<char>::char_type* s4 = "ABCD";

   cout << "The string s1 is: " << s1 << endl;
   cout << "The string s2 is: " << s2 << endl;
   cout << "The string s3 is: " << s3 << endl;
   cout << "The string s4 is: " << s4 << endl;

   int comp1, comp2, comp3, comp4;
   comp1 = char_traits<char>::compare ( s1 , s2 , 2 );
   comp2 = char_traits<char>::compare ( s2 , s3 , 3 );
   comp3 = char_traits<char>::compare ( s3 , s4 , 4 );
   comp4 = char_traits<char>::compare ( s4 , s3 , 4 );
   cout << "compare ( s1 , s2 , 2 ) = " << comp1 << endl;
   cout << "compare ( s2 , s3 , 3 ) = " << comp2 << endl;
   cout << "compare ( s3 , s4 , 4 ) = " << comp3 << endl;
   cout << "compare ( s4 , s3 , 4 ) = " << comp4 << endl;
}

char_traits::copy

Belirtilen sayıda karakteri bir dizeden diğerine kopyalar.

Geçirilen değerlerin doğru olup olmadığını denetlemek için çağıranı kullanan bu yöntem güvenli olmayabilir. Bunun yerine char_traits::_Copy_s kullanmayı düşünün.

static char_type *copy(char_type* _To,
    const char_type* _From,
    size_t _Num);

Parametreler

_Hedef
Kopyalanan karakter dizisini almayı hedefleyen dize veya karakter dizisinin başındaki öğesi.

_Kaynak
Kopyalanacak kaynak dizenin veya karakter dizisinin başındaki öğesi.

_Num
Kopyalanacak öğe sayısı.

Dönüş Değeri

Kopyalanan karakter dizisini almayı hedefleyen dize veya karakter dizisine kopyalanan ilk öğe.

Açıklamalar

Kaynak ve hedef karakter dizileri çakışmamalıdır.

Örnek

// char_traits_copy.cpp
// compile with: /EHsc /W3
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   char_traits<char>::char_type s1[] = "abcd-1234-abcd";
   char_traits<char>::char_type s2[] = "ABCD-1234";
   char_traits<char>::char_type* result1;
   cout << "The source string is: " << s1 << endl;
   cout << "The destination string is: " << s2 << endl;
   // Note: char_traits::copy is potentially unsafe, consider
   // using char_traits::_Copy_s instead.
   result1 = char_traits<char>::copy ( s1 , s2 , 4 );  // C4996
   cout << "The result1 = copy ( s1 , s2 , 4 ) is: "
        << result1 << endl;
}
The source string is: abcd-1234-abcd
The destination string is: ABCD-1234
The result1 = copy ( s1 , s2 , 4 ) is: ABCD-1234-abcd

char_traits::_Copy_s

Belirtilen sayıda karakteri bir dizeden diğerine kopyalar.

static char_type *_Copy_s(
    char_type* dest,
    size_t dest_size,
    const char_type* _From,
    size_t count);

Parametreler

dest
Kopyalanan karakter dizisini almak için hedeflenen dize veya karakter dizisi.

dest_size
Dest boyutu. ise char_type char, bu boyut bayt cinsindendir. ise char_type wchar_t, bu boyut sözcüklerle ifade edilir.

_Kaynak
Kopyalanacak kaynak dize veya karakter dizisi.

count
Kopyalanacak öğe sayısı.

Dönüş Değeri

Kopyalanan karakter dizisini almak için hedeflenen dize veya karakter dizisi.

Açıklamalar

Kaynak ve hedef karakter dizileri çakışmamalıdır.

Örnek

// char_traits__Copy_s.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
    using namespace std;

    char_traits<char>::char_type s1[] = "abcd-1234-abcd";
    char_traits<char>::char_type s2[] = "ABCD-1234";
    char_traits<char>::char_type* result1;
    cout << "The source string is: " << s1 << endl;
    cout << "The destination string is: " << s2 << endl;
    result1 = char_traits<char>::_Copy_s(s1,
        char_traits<char>::length(s1), s2, 4);
    cout << "The result1 = _Copy_s(s1, "
         << "char_traits<char>::length(s1), s2, 4) is: "
         << result1 << endl;
}
The source string is: abcd-1234-abcd
The destination string is: ABCD-1234
The result1 = _Copy_s(s1, char_traits<char>::length(s1), s2, 4) is: ABCD-1234-abcd

char_traits::eof

Dosya sonu (EOF) karakterini döndürür.

static int_type eof();

Dönüş Değeri

EOF karakteri.

Açıklamalar

Dosya sonunu (EOF veya WEOF gibi) temsil eden bir değer.

C++ standardı bu değerin geçerli char_type bir değere karşılık olmaması gerektiğini belirtir. Microsoft C++ derleyicisi bu kısıtlamayı türü chariçin zorlar, ancak türü wchar_tiçin zorlamaz. Aşağıdaki örnek bunu gösterir.

Örnek

// char_traits_eof.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main()
{
    using namespace std;

    char_traits<char>::char_type ch1 = 'x';
    char_traits<char>::int_type int1;
    int1 = char_traits<char>::to_int_type(ch1);
    cout << "char_type ch1 is '" << ch1 << "' and corresponds to int_type "
         << int1 << "." << endl << endl;

    char_traits<char>::int_type int2 = char_traits<char>::eof();
    cout << "The eof marker for char_traits<char> is: " << int2 << endl;

    char_traits<wchar_t>::int_type int3 = char_traits<wchar_t>::eof();
    cout << "The eof marker for char_traits<wchar_t> is: " << int3 << endl;
}
char_type ch1 is 'x' and corresponds to int_type 120.

The eof marker for char_traits<char> is: -1
The eof marker for char_traits<wchar_t> is: 65535

char_traits::eq

İki char_type karakterin eşit olup olmadığını sınar.

static bool eq(const char_type& _Ch1, const char_type& _Ch2);

Parametreler

_Ch1
Eşitlik için test edilecek iki karakterden ilki.

_Ch2
Eşitlik için test edilecek iki karakterden ikincisi.

Dönüş Değeri

true birinci karakter ikinci karaktere eşitse; aksi takdirde false.

Örnek

// char_traits_eq.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   char_traits<char>::char_type ch1 =  'x';
   char_traits<char>::char_type ch2 =  'y';
   char_traits<char>::char_type ch3 =  'x';

   // Testing for equality
   bool b1 = char_traits<char>::eq ( ch1 , ch2 );
   if ( b1 )
      cout << "The character ch1 is equal "
           << "to the character ch2." << endl;
   else
      cout << "The character ch1 is not equal "
           << "to the character ch2." << endl;

   // An equivalent and alternatively test procedure
   if ( ch1 == ch3 )
      cout << "The character ch1 is equal "
           << "to the character ch3." << endl;
   else
      cout << "The character ch1 is not equal "
           << "to the character ch3." << endl;
}
The character ch1 is not equal to the character ch2.
The character ch1 is equal to the character ch3.

char_traits::eq_int_type

S olarak int_typetemsil edilen iki karakterin eşit olup olmadığını sınar.

static bool eq_int_type(const int_type& _Ch1, const int_type& _Ch2);

Parametreler

_Ch1
Eşitlik int_typeiçin sınanacak iki karakterden ilki.

_Ch2
Eşitlik int_typeiçin sınanacak iki karakterden ikincisi.

Dönüş Değeri

true birinci karakter ikinci karaktere eşitse; aksi takdirde false.

Örnek

// char_traits_eq_int_type.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   char_traits<char>::char_type ch1 =  'x';
   char_traits<char>::char_type ch2 =  'y';
   char_traits<char>::char_type ch3 =  'x';

   // Converting from char_type to int_type
   char_traits<char>::int_type int1, int2 , int3;
   int1 =char_traits<char>:: to_int_type ( ch1 );
   int2 =char_traits<char>:: to_int_type ( ch2 );
   int3 =char_traits<char>:: to_int_type ( ch3 );

   cout << "The char_types and corresponding int_types are:"
        << "\n    ch1 = " << ch1 << " corresponding to int1 = "
        << int1 << "."
        << "\n    ch2 = " << ch2 << " corresponding to int1 = "
        << int2 << "."
        << "\n    ch3 = " << ch3 << " corresponding to int1 = "
        << int3 << "." << endl << endl;

   // Testing for equality of int_type representations
   bool b1 = char_traits<char>::eq_int_type ( int1 , int2 );
   if ( b1 )
      cout << "The int_type representation of character ch1\n "
           << "is equal to the int_type representation of ch2."
           << endl;
   else
      cout << "The int_type representation of character ch1\n is "
           << "not equal to the int_type representation of ch2."
           << endl;

   // An equivalent and alternatively test procedure
   if ( int1 == int3 )
      cout << "The int_type representation of character ch1\n "
           << "is equal to the int_type representation of ch3."
           << endl;
   else
      cout << "The int_type representation of character ch1\n is "
           << "not equal to the int_type representation of ch3."
           << endl;
}
The char_types and corresponding int_types are:
    ch1 = x corresponding to int1 = 120.
    ch2 = y corresponding to int1 = 121.
    ch3 = x corresponding to int1 = 120.

The int_type representation of character ch1
is not equal to the int_type representation of ch2.
The int_type representation of character ch1
is equal to the int_type representation of ch3.

char_traits::find

Bir karakter aralığında belirtilen karakterin ilk oluşumunu arar.

static const char_type* find(const char_type* str,
    size_t _Num,
    const char_type& _Ch);

Parametreler

str
Aranacak dizedeki ilk karakter.

_Num
Aranacak aralıktaki ilk konumlardan sayılan konum sayısı.

_Caner
Aralıkta aranacak karakter.

Dönüş Değeri

Bir eşleşme bulunursa, aralıkta belirtilen karakterin ilk oluşumunun işaretçisi; aksi takdirde, null işaretçi.

Örnek

// char_traits_find.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   const char* s1 = "f2d-1234-abcd";
   const char* result1;
   cout << "The string to be searched is: " << s1 << endl;

   // Searching for a 'd' in the first 6 positions of string s1
   result1 = char_traits<char>::find ( s1 , 6 , 'd');
   cout << "The character searched for in s1 is: "
        << *result1 << endl;
   cout << "The string beginning with the first occurrence\n "
        << "of the character 'd' is: " << result1 << endl;

   // When no match is found the NULL value is returned
   const char* result2;
   result2 = char_traits<char>::find ( s1 , 3 , 'a');
   if ( result2 == NULL )
      cout << "The result2 of the search is NULL." << endl;
   else
      cout << "The result2 of the search  is: " << result1
           << endl;
}
The string to be searched is: f2d-1234-abcd
The character searched for in s1 is: d
The string beginning with the first occurrence
of the character 'd' is: d-1234-abcd
The result2 of the search is NULL.

char_traits::int_type

Tür veya dosya sonu (EOF) karakterini char_type temsil eden bir tamsayı türü.

typedef long int_type;

Açıklamalar

Özgün değeri değiştirmeden türün CharType int_type bir değerinin sonradan geri döndürülecek CharType şekilde yazılması mümkün olmalıdır.

Örnek

bildirme ve kullanma int_typeörneği için eq_int_type örneğine bakın.

char_traits::length

Bir dizenin uzunluğunu döndürür.

static size_t length(const char_type* str);

Parametreler

str
Uzunluğu ölçülecek olan C dizesi.

Dönüş Değeri

Null sonlandırıcı dahil değil, ölçülen dizideki öğelerin sayısı.

Örnek

// char_traits_length.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   const char* str1= "Hello";
   cout << "The C-string str1 is: " << str1 << endl;

   size_t lenStr1;
   lenStr1 = char_traits<char>::length ( str1 );
   cout << "The length of C-string str1 is: "
        << lenStr1 << "." << endl;
}
The C-string str1 is: Hello
The length of C-string str1 is: 5.

char_traits::lt

Bir karakterin başka bir karakterden küçük olup olmadığını sınar.

static bool lt(const char_type& _Ch1, const char_type& _Ch2);

Parametreler

_Ch1
Küçüktür için test edilecek iki karakterden ilki.

_Ch2
Daha azı için test edilecek iki karakterden ikincisi.

Dönüş Değeri

true birinci karakter ikinci karakterden küçükse; aksi takdirde false.

Örnek

// char_traits_lt.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   char_traits<char>::char_type ch1 =  'x';
   char_traits<char>::char_type ch2 =  'y';
   char_traits<char>::char_type ch3 =  'z';

   // Testing for less than
   bool b1 = char_traits<char>::lt ( ch1 , ch2 );
   if ( b1 )
      cout << "The character ch1 is less than "
           << "the character ch2." << endl;
   else
      cout << "The character ch1 is not less "
           << "than the character ch2." << endl;

   // An equivalent and alternatively test procedure
   if ( ch3 <  ch2 )
      cout << "The character ch3 is less than "
           << "the character ch2." << endl;
   else
      cout << "The character ch3 is not less "
           << "than the character ch2." << endl;
}
The character ch1 is less than the character ch2.
The character ch3 is not less than the character ch2.

char_traits::move

Bir dizideki belirtilen sayıda karakteri, çakışan başka bir diziye kopyalar.

Geçirilen değerlerin doğru olup olmadığını denetlemek için çağıranı kullanan bu yöntem güvenli olmayabilir. Bunun yerine char_traits::_Move_s kullanmayı düşünün.

static char_type *move(char_type* _To,
    const char_type* _From,
    size_t _Num);

Parametreler

_Hedef
Kopyalanan karakter dizisini almayı hedefleyen dize veya karakter dizisinin başındaki öğesi.

_Kaynak
Kopyalanacak kaynak dizenin veya karakter dizisinin başındaki öğesi.

_Num
Kaynak dizeden kopyalanacak öğe sayısı.

Dönüş Değeri

İlk öğe _To kopyalanan karakter dizisini almayı hedefleyen dizeye veya karakter dizisine kopyalanır.

Açıklamalar

Kaynak ve hedef çakışabilir.

Örnek

// char_traits_move.cpp
// compile with: /EHsc /W3
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   char_traits<char>::char_type sFrom1[] =  "abcd-1234-abcd";
   char_traits<char>::char_type sTo1[] =  "ABCD-1234";
   char_traits<char>::char_type* result1;
   cout << "The source string sFrom1 is: " << sFrom1 << endl;
   cout << "The destination stringsTo1 is: " << sTo1 << endl;
   // Note: char_traits::move is potentially unsafe, consider
   // using char_traits::_Move_s instead.
   result1 = char_traits<char>::move ( sTo1 ,  sFrom1 , 4 );  // C4996
   cout << "The result1 = move ( sTo1 , sFrom1 , 4 ) is: "
        << result1 << endl << endl;

   // When source and destination overlap
   char_traits<char>::char_type sToFrom2[] = "abcd-1234-ABCD";
   char_traits<char>::char_type* result2;
   cout << "The source/destination string sToFrom2 is: "
        << sToFrom2 << endl;
   const char* findc = char_traits<char>::find ( sToFrom2 , 4 , 'c' );
   // Note: char_traits::move is potentially unsafe, consider
   // using char_traits::_Move_s instead.
   result2 = char_traits<char>::move ( sToFrom2 , findc , 8 );  // C4996
   cout << "The result2 = move ( sToFrom2 , findc , 8 ) is: "
        << result2 << endl;
}
The source string sFrom1 is: abcd-1234-abcd
The destination stringsTo1 is: ABCD-1234
The result1 = move ( sTo1 , sFrom1 , 4 ) is: abcd-1234

The source/destination string sToFrom2 is: abcd-1234-ABCD
The result2 = move ( sToFrom2 , findc , 8 ) is: cd-1234-4-ABCD

char_traits::_Move_s

Bir dizideki belirtilen sayıda karakteri, çakışan başka bir diziye kopyalar.

static char_type *_Move_s(
    char_type* dest,
    size_t dest_size,
    const char_type* _From,
    size_t count);

Parametreler

dest
Kopyalanan karakter dizisini almayı hedefleyen dize veya karakter dizisinin başındaki öğesi.

dest_size
Dest boyutu. ise char_type char, bu bayt cinsindendir. ise char_type wchar_t, bu sözcüklerle yapılır.

_Kaynak
Kopyalanacak kaynak dizenin veya karakter dizisinin başındaki öğesi.

count
Kaynak dizeden kopyalanacak öğe sayısı.

Dönüş Değeri

Kopyalanan karakter dizisini almak için hedeflenen dizeye veya karakter dizisine kopyalanan ilk öğe.

Açıklamalar

Kaynak ve hedef çakışabilir.

Örnek

// char_traits__Move_s.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
    using namespace std;

    char_traits<char>::char_type sFrom1[] =  "abcd-1234-abcd";
    char_traits<char>::char_type sTo1[] =  "ABCD-1234";
    char_traits<char>::char_type* result1;
    cout << "The source string sFrom1 is: " << sFrom1 << endl;
    cout << "The destination stringsTo1 is: " << sTo1 << endl;
    result1 = char_traits<char>::_Move_s(sTo1,
        char_traits<char>::length(sTo1), sFrom1, 4);
    cout << "The result1 = _Move_s(sTo1, "
         << "char_traits<char>::length(sTo1), sFrom1, 4) is: "
         << result1 << endl << endl;

    // When source and destination overlap
    char_traits<char>::char_type sToFrom2[] = "abcd-1234-ABCD";
    char_traits<char>::char_type* result2;
    cout << "The source/destination string sToFrom2 is: "
         << sToFrom2 << endl;
    const char* findc = char_traits<char>::find(sToFrom2, 4, 'c');
    result2 = char_traits<char>::_Move_s(sToFrom2,
        char_traits<char>::length(sToFrom2), findc, 8);
    cout << "The result2 = _Move_s(sToFrom2, "
        << "char_traits<char>::length(sToFrom2), findc, 8) is: "
         << result2 << endl;
}
The source string sFrom1 is: abcd-1234-abcd
The destination stringsTo1 is: ABCD-1234
The result1 = _Move_s(sTo1, char_traits<char>::length(sTo1), sFrom1, 4) is: abcd-1234

The source/destination string sToFrom2 is: abcd-1234-ABCD
The result2 = _Move_s(sToFrom2, char_traits<char>::length(sToFrom2), findc, 8) is: cd-1234-4-ABCD

char_traits::not_eof

Bir karakterin dosya sonu (EOF) karakteri mi yoksa EOF mi olduğunu sınar.

static int_type not_eof(const int_type& _Ch);

Parametreler

_Caner
EOF karakteri olup olmadığı için test edilecek olarak temsil edilen int_type karakter.

Dönüş Değeri

Karakterin int_type gösterimi, EOF karakterinin gösterimine eşit değilse int_type test edilir.

Karakter int_type değeri EOF int_type değerine eşitse, değerini seçin false.

Örnek

// char_traits_not_eof.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( ) {
   using namespace std;

   char_traits<char>::char_type ch1 =  'x';
   char_traits<char>::int_type int1;
   int1 = char_traits<char>:: to_int_type ( ch1 );
   cout << "The char_type ch1 is " << ch1
        << " corresponding to int_type: "
        << int1 << "." << endl;

   // EOF member function
   char_traits <char>::int_type int2 = char_traits<char>::eof ( );
   cout << "The eofReturn is: " << int2 << endl;

   // Testing for EOF or another character
   char_traits <char>::int_type eofTest1, eofTest2;
   eofTest1 = char_traits<char>::not_eof ( int1 );
   if ( !eofTest1 )
      cout << "The eofTest1 indicates ch1 is an EOF character."
              << endl;
   else
      cout << "The eofTest1 returns: " << eofTest1
           << ", which is the character: "
           <<  char_traits<char>::to_char_type ( eofTest1 )
           << "." << endl;

   eofTest2 = char_traits<char>::not_eof ( int2 );
   if ( !eofTest2 )
      cout << "The eofTest2 indicates int2 is an EOF character."
           << endl;
   else
      cout << "The eofTest1 returns: " << eofTest2
           << ", which is the character: "
           <<  char_traits<char>::to_char_type ( eofTest2 )
           << "." << endl;
}
The char_type ch1 is x corresponding to int_type: 120.
The eofReturn is: -1
The eofTest1 returns: 120, which is the character: x.
The eofTest2 indicates int2 is an EOF character.

char_traits::off_type

Bir akıştaki konumlar arasındaki uzaklıkları gösterebilen bir tamsayı türü.

typedef streamoff off_type;

Açıklamalar

Türü, çeşitli akış konumlandırma işlemlerinde yer alan bayt uzaklığını depolayan bir nesneyi tanımlayan imzalı bir tamsayıdır. Genellikle streamoff için bir eş anlamlıdır, ancak temelde bu türle aynı özelliklere sahiptir.

char_traits::p os_type

Bir akıştaki konumları gösterebilen bir tamsayı türü.

typedef streampos pos_type;

Açıklamalar

Türü, bir akış içinde rastgele bir dosya konumu göstergesini geri yüklemek için gereken tüm bilgileri depolayan bir nesneyi açıklar. Genellikle akışlar için bir eş anlamlıdır, ancak her durumda temelde bu türle aynı özelliklere sahiptir.

char_traits::state_type

Akıştaki çok baytlı karakterler için dönüştürme durumunu temsil eden bir tür.

typedef implementation-defined state_type;

Açıklamalar

Türü, dönüştürme durumunu temsil eden bir nesneyi açıklar. Genellikle için mbstate_tbir eş anlamlıdır, ancak her durumda temelde bu türle aynı özelliklere sahiptir.

char_traits::to_char_type

Bir int_type karakteri ilgili char_type karaktere dönüştürür ve sonucu döndürür.

static char_type to_char_type(const int_type& _Ch);

Parametreler

_Caner
int_type olarak char_typetemsil edilecek karakter.

Dönüş Değeri

Karaktere char_type int_type karşılık gelen karakter.

Bu şekilde temsil edilemeyen _Ch değeri belirtilmemiş bir sonuç verir.

Açıklamalar

Dönüştürme işlemleri to_int_type ve to_char_type birbirine terstir, böylece:

to_int_type ( to_char_type ( x ) ) == x

herhangi bir int_type x ve için

to_char_type ( to_int_type ( x ) ) == x

herhangi bir char_type x için.

Örnek

// char_traits_to_char_type.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   char_traits<char>::char_type ch1 =  'a';
   char_traits<char>::char_type ch2 =  'b';
   char_traits<char>::char_type ch3 =  'a';

   // Converting from char_type to int_type
   char_traits<char>::int_type int1, int2 , int3;
   int1 =char_traits<char>:: to_int_type ( ch1 );
   int2 =char_traits<char>:: to_int_type ( ch2 );
   int3 =char_traits<char>:: to_int_type ( ch3 );

   cout << "The char_types and corresponding int_types are:"
        << "\n    ch1 = " << ch1 << " corresponding to int1 = "
        << int1 << "."
        << "\n    ch2 = " << ch2 << " corresponding to int1 = "
        << int2 << "."
        << "\n    ch3 = " << ch3 << " corresponding to int1 = "
        << int3 << "." << endl << endl;

   // Converting from int_type back to char_type
   char_traits<char>::char_type rec_ch1;
   rec_ch1 = char_traits<char>:: to_char_type ( int1);
   char_traits<char>::char_type rec_ch2;
   rec_ch2 = char_traits<char>:: to_char_type ( int2);

   cout << "The recovered char_types and corresponding int_types are:"
        << "\n    recovered ch1 = " << rec_ch1 << " from int1 = "
        << int1 << "."
        << "\n    recovered ch2 = " << rec_ch2 << " from int2 = "
        << int2 << "." << endl << endl;

   // Testing that the conversions are inverse operations
   bool b1 = char_traits<char>::eq ( rec_ch1 , ch1 );
   if ( b1 )
      cout << "The recovered char_type of ch1"
           << " is equal to the original ch1." << endl;
   else
      cout << "The recovered char_type of ch1"
           << " is not equal to the original ch1." << endl;

   // An equivalent and alternatively test procedure
   if ( rec_ch2 == ch2 )
      cout << "The recovered char_type of ch2"
           << " is equal to the original ch2." << endl;
   else
      cout << "The recovered char_type of ch2"
           << " is not equal to the original ch2." << endl;
}
The char_types and corresponding int_types are:
    ch1 = a corresponding to int1 = 97.
    ch2 = b corresponding to int1 = 98.
    ch3 = a corresponding to int1 = 97.

The recovered char_types and corresponding int_types are:
    recovered ch1 = a from int1 = 97.
    recovered ch2 = b from int2 = 98.

The recovered char_type of ch1 is equal to the original ch1.
The recovered char_type of ch2 is equal to the original ch2.

char_traits::to_int_type

Bir char_type karakteri ilgili int_type karaktere dönüştürür ve sonucu döndürür.

static int_type to_int_type(const char_type& _Ch);

Parametreler

_Caner
char_type olarak int_typetemsil edilecek karakter.

Dönüş Değeri

Karaktere int_type char_type karşılık gelen karakter.

Açıklamalar

Dönüştürme işlemleri to_int_type ve to_char_type birbirine terstir, böylece:

to_int_type ( to_char_type ( x ) ) == x

herhangi bir int_type x için ve

to_char_type ( to_int_type ( x ) ) == x

herhangi bir char_type x için.

Örnek

// char_traits_to_int_type.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   char_traits<char>::char_type ch1 = 'a';
   char_traits<char>::char_type ch2 = 'b';
   char_traits<char>::char_type ch3 = 'a';

   // Converting from char_type to int_type
   char_traits<char>::int_type int1, int2 , int3;
   int1 =char_traits<char>:: to_int_type ( ch1 );
   int2 =char_traits<char>:: to_int_type ( ch2 );
   int3 =char_traits<char>:: to_int_type ( ch3 );

   cout << "The char_types and corresponding int_types are:"
        << "\n    ch1 = " << ch1 << " corresponding to int1 = "
        << int1 << "."
        << "\n    ch2 = " << ch2 << " corresponding to int1 = "
        << int2 << "."
        << "\n    ch3 = " << ch3 << " corresponding to int1 = "
        << int3 << "." << endl << endl;

   // Converting from int_type back to char_type
   char_traits<char>::char_type rec_ch1;
   rec_ch1 = char_traits<char>:: to_char_type ( int1);
   char_traits<char>::char_type rec_ch2;
   rec_ch2 = char_traits<char>:: to_char_type ( int2);

   cout << "The recovered char_types and corresponding int_types are:"
        << "\n    recovered ch1 = " << rec_ch1 << " from int1 = "
        << int1 << "."
        << "\n    recovered ch2 = " << rec_ch2 << " from int2 = "
        << int2 << "." << endl << endl;

   // Testing that the conversions are inverse operations
   bool b1 = char_traits<char>::eq ( rec_ch1 , ch1 );
   if ( b1 )
      cout << "The recovered char_type of ch1"
           << " is equal to the original ch1." << endl;
   else
      cout << "The recovered char_type of ch1"
           << " is not equal to the original ch1." << endl;

   // An equivalent and alternatively test procedure
   if ( rec_ch2 == ch2 )
      cout << "The recovered char_type of ch2"
           << " is equal to the original ch2." << endl;
   else
      cout << "The recovered char_type of ch2"
           << " is not equal to the original ch2." << endl;
}
The char_types and corresponding int_types are:
    ch1 = a corresponding to int1 = 97.
    ch2 = b corresponding to int1 = 98.
    ch3 = a corresponding to int1 = 97.

The recovered char_types and corresponding int_types are:
    recovered ch1 = a from int1 = 97.
    recovered ch2 = b from int2 = 98.

The recovered char_type of ch1 is equal to the original ch1.
The recovered char_type of ch2 is equal to the original ch2.

Ayrıca bkz.

C++ Standart Kitaplığında İş Parçacığı Güvenliği