<string>
işlevleri
getline
stod
stof
stoi
stol
stold
stoll
stoul
stoull
swap
to_string
to_wstring
getline
Giriş akışından dizeleri satır satır ayıklayın.
// (1) delimiter as parameter
template <class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>& in_stream,
basic_string<CharType, Traits, Allocator>& str,
CharType delimiter);
template <class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>&& in_stream,
basic_string<CharType, Traits, Allocator>& str,
const CharType delimiter);
// (2) default delimiter used
template <class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>& in_stream,
basic_string<CharType, Traits, Allocator>& str);
template <class Allocator, class Traits, class Allocator>
basic_istream<Allocator, Traits>& getline(
basic_istream<Allocator, Traits>&& in_stream,
basic_string<Allocator, Traits, Allocator>& str);
Parametreler
in_stream
Bir dizenin ayıklanması için giriş akışı.
str
Giriş akışındaki karakterlerin okunduğu dize.
delimiter
Çizgi sınırlayıcısı.
Dönüş Değeri
Giriş akışı in_stream
.
Açıklamalar
bulunana kadar delimiter
içindeki karakterleri in_stream
ayıkla olarak işaretlenen (1)
işlev imzaları çifti bunları içinde str
depolar.
İşaretlenen (2)
işlev imzaları çifti, varsayılan satır sınırlayıcısı olarak yeni satır kullanır ve olarak getline(in_stream, str, in_stream. widen('\n'))
davranır.
Her çiftin ikinci işlevi, başvuruları destekleyen rvalue
ilk çifte bir analogdur.
Aşağıdakilerden biri gerçekleştiğinde ayıklama durdurulur:
Dosyanın sonunda iç durum bayrağı
in_stream
olarakios_base::eofbit
ayarlanır.İşlev, ile eşit
delimiter
olan bir öğeyi ayıkladıktan sonra. öğesi, denetimli diziye geri yerleştirilmez veya eklenmez.İşlev öğeleri ayıkladıktan
str.max_size
sonra. iç durum bayrağıin_stream
olarakios_base::failbit
ayarlanır.Daha önce listelenenler dışında bazı başka hatalar; iç durum bayrağı
in_stream
olarakios_base::badbit
ayarlanır.
İç durum bayrakları hakkında bilgi için bkz ios_base::iostate
. .
İşlev hiçbir öğe ayıklamazsa, iç durum bayrağı in_stream
olarak ios_base::failbit
ayarlanır. Her durumda döndürür getline
in_stream
.
Özel durum oluşturulursa in_stream
ve str
geçerli bir durumda bırakılırsa.
Örnek
Aşağıdaki kod iki modda gösterilir getline()
: ilk olarak varsayılan sınırlayıcı (yeni satır) ve ikincisinde sınırlayıcı olarak boşluk vardır. Dosya sonu karakteri (klavyede CTRL-Z), while döngülerinin sonlandırılmasını denetlemek için kullanılır. Bu değer, öğesinin iç durum bayrağını cin
eofbit
olarak ayarlar ve ikinci while döngüsü düzgün çalışmadan önce ile basic_ios::clear()
temizlenmelidir.
// compile with: /EHsc /W4
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
string str;
vector<string> v1;
cout << "Enter a sentence, press ENTER between sentences. (Ctrl-Z to stop): " << endl;
// Loop until end-of-file (Ctrl-Z) is input, store each sentence in a vector.
// Default delimiter is the newline character.
while (getline(cin, str)) {
v1.push_back(str);
}
cout << "The following input was stored with newline delimiter:" << endl;
for (const auto& p : v1) {
cout << p << endl;
}
cin.clear();
vector<string> v2;
// Now try it with a whitespace delimiter
while (getline(cin, str, ' ')) {
v2.push_back(str);
}
cout << "The following input was stored with whitespace as delimiter:" << endl;
for (const auto& p : v2) {
cout << p << endl;
}
}
stod
Karakter dizisini öğesine double
dönüştürür.
double stod(
const string& str,
size_t* idx = 0);
double stod(
const wstring& str,
size_t* idx = 0
;
Parametreler
str
Dönüştürülecek karakter dizisi.
idx
İlk dönüştürülmemiş karakterin dizin değeri.
Dönüş Değeri
double
değeri.
Açıklamalar
işlevi, işlevin str
içindeki bir nesne olan öğesini çağırarak strtod( str.c_str(), _Eptr)
_Eptr
gibi içindeki öğelerin sırasını türünde double
bir değere dönüştürür. ise str.c_str() == *_Eptr
türünde bir nesnesi invalid_argument
oluşturur. Böyle bir çağrı ayarlanırsa errno
türünde out_of_range
bir nesnesi oluşturur. Aksi takdirde, null işaretçi değilse idx
işlev içinde *idx
depolar *_Eptr - str.c_str()
ve değeri döndürür.
stof
Karakter dizisini float'a dönüştürür.
float stof(
const string& str,
size_t* idx = 0);
float stof(
const wstring& str,
size_t* idx = 0);
Parametreler
str
Dönüştürülecek karakter dizisi.
idx
İlk dönüştürülmemiş karakterin dizin değeri.
Dönüş Değeri
float
değeri.
Açıklamalar
işlevi, işlevin str
içindeki bir nesne olan öğesini çağırarak strtof( str.c_str(), _Eptr)
_Eptr
gibi içindeki öğelerin sırasını türünde float
bir değere dönüştürür. ise str.c_str() == *_Eptr
türünde bir nesnesi invalid_argument
oluşturur. Böyle bir çağrı ayarlanırsa errno
türünde out_of_range
bir nesnesi oluşturur. Aksi takdirde, null işaretçi değilse idx
işlev içinde *idx
depolar *_Eptr - str.c_str()
ve değeri döndürür.
stoi
Karakter dizisini tamsayıya dönüştürür.
int stoi(
const string& str,
size_t* idx = 0,
int base = 10);
int stoi(
const wstring& str,
size_t* idx = 0,
int base = 10);
Dönüş Değeri
Tamsayı değeri.
Parametreler
str
Dönüştürülecek karakter dizisi.
idx
İlk dönüştürülmemiş karakterin dizin değeri.
base
Kullanılacak sayı tabanı.
Açıklamalar
işlevistoi
, str içindeki karakter dizisini tür int
değerine dönüştürür ve değeri döndürür. Örneğin, "10" karakter dizisi geçirildiğinde, tarafından stoi
döndürülen değer 10 tamsayıdır.
stoi
işlevine benzer şekilde çağrıldığında strtol( str.c_str(), _Eptr, idx)
tek baytlı karakterler için işlevine strtol
benzer şekilde davranır. Burada _Eptr
işlevin içindeki bir nesnedir veya wcstol
geniş karakterler için benzer şekilde çağrıldığında . wcstol(Str.c_str(), _Eptr, idx)
Daha fazla bilgi için bkz. strtol
, wcstol
, _strtol_l
, _wcstol_l
.
ise str.c_str() == *_Eptr
türünde stoi
bir nesnesi invalid_argument
oluşturur. Böyle bir çağrı ayarlanacaksa errno
veya döndürülen değer türünde int
bir nesne olarak temsil edilemiyorsa türünde bir nesnesi out_of_range
oluşturur. Aksi takdirde, idx null işaretçi değilse, işlevi içinde *idx
depolar*_Eptr - str.c_str()
.
stol
Karakter dizisini öğesine long
dönüştürür.
long stol(
const string& str,
size_t* idx = 0,
int base = 10);
long stol(
const wstring& str,
size_t* idx = 0,
int base = 10);
Parametreler
str
Dönüştürülecek karakter dizisi.
idx
İlk dönüştürülmemiş karakterin dizin değeri.
base
Kullanılacak sayı tabanı.
Dönüş Değeri
Uzun tamsayı değeri.
Açıklamalar
işlevi, str içindeki öğelerin sırasını çağırarak strtol( str.c_str(), _Eptr, idx)
türünde long
bir değere dönüştürür. Burada _Eptr
işlevin içindeki bir nesnedir. ise str.c_str() == *_Eptr
türünde bir nesnesi invalid_argument
oluşturur. Böyle bir çağrı ayarlanırsa errno
türünde out_of_range
bir nesnesi oluşturur. Aksi takdirde, null işaretçi değilse idx
işlev içinde *idx
depolar *_Eptr - str.c_str()
ve değeri döndürür.
stold
Karakter dizisini öğesine long double
dönüştürür.
double stold(
const string& str,
size_t* idx = 0);
double stold(
const wstring& str,
size_t* idx = 0);
Parametreler
str
Dönüştürülecek karakter dizisi.
idx
İlk dönüştürülmemiş karakterin dizin değeri.
Dönüş Değeri
long double
değeri.
Açıklamalar
işlevi, str içindeki öğelerin sırasını çağırarak strtold( str.c_str(), _Eptr)
türünde long double
bir değere dönüştürür. Burada _Eptr
işlevin içindeki bir nesnedir. ise str.c_str() == *_Eptr
türünde bir nesnesi invalid_argument
oluşturur. Böyle bir çağrı ayarlanırsa errno
türünde out_of_range
bir nesnesi oluşturur. Aksi takdirde, null işaretçi değilse idx
işlev içinde *idx
depolar *_Eptr - str.c_str()
ve değeri döndürür.
stoll
Karakter dizisini öğesine long long
dönüştürür.
long long stoll(
const string& str,
size_t* idx = 0,
int base = 10);
long long stoll(
const wstring& str,
size_t* idx = 0,
int base = 10);
Parametreler
str
Dönüştürülecek karakter dizisi.
idx
İlk dönüştürülmemiş karakterin dizin değeri.
base
Kullanılacak sayı tabanı.
Dönüş Değeri
long long
değeri.
Açıklamalar
işlevi, str içindeki öğelerin sırasını çağırarak strtoll( str.c_str(), _Eptr, idx)
türünde long long
bir değere dönüştürür. Burada _Eptr
işlevin içindeki bir nesnedir. ise str.c_str() == *_Eptr
türünde bir nesnesi invalid_argument
oluşturur. Böyle bir çağrı ayarlanırsa errno
türünde out_of_range
bir nesnesi oluşturur. Aksi takdirde, idx null işaretçi değilse işlev içinde *idx
depolar *_Eptr - str.c_str()
ve değeri döndürür.
stoul
Karakter dizisini işaretsiz uzun bir süreye dönüştürür.
unsigned long stoul(
const string& str,
size_t* idx = 0,
int base = 10);
unsigned long stoul(
const wstring& str,
size_t* idx = 0,
int base = 10);
Parametreler
str
Dönüştürülecek karakter dizisi.
idx
İlk dönüştürülmemiş karakterin dizin değeri.
base
Kullanılacak sayı tabanı.
Dönüş Değeri
İşaretsiz uzun tamsayı değeri.
Açıklamalar
işlevi, str içindeki öğelerin sırasını çağırarak strtoul( str.c_str(), _Eptr, idx)
türünde unsigned long
bir değere dönüştürür. Burada _Eptr
işlevin içindeki bir nesnedir. ise str.c_str() == *_Eptr
türünde bir nesnesi invalid_argument
oluşturur. Böyle bir çağrı ayarlanırsa errno
türünde out_of_range
bir nesnesi oluşturur. Aksi takdirde, idx null işaretçi değilse işlev içinde *idx
depolar *_Eptr - str.c_str()
ve değeri döndürür.
stoull
Karakter dizisini öğesine unsigned long long
dönüştürür.
unsigned long long stoull(
const string& str,
size_t* idx = 0,
int base = 10);
unsigned long long stoull(
const wstring& str,
size_t* idx = 0,
int base = 10);
Parametreler
str
Dönüştürülecek karakter dizisi.
idx
İlk dönüştürülmemiş karakterin dizin değeri.
base
Kullanılacak sayı tabanı.
Dönüş Değeri
unsigned long long
değeri.
Açıklamalar
işlevi, str içindeki öğelerin sırasını çağırarak strtoull( str.c_str(), _Eptr, idx)
türünde unsigned long long
bir değere dönüştürür. Burada _Eptr
işlevin içindeki bir nesnedir. ise str.c_str() == *_Eptr
türünde bir nesnesi invalid_argument
oluşturur. Böyle bir çağrı ayarlanırsa errno
türünde out_of_range
bir nesnesi oluşturur. Aksi takdirde, null işaretçi değilse idx
işlev içinde *idx
depolar *_Eptr - str.c_str()
ve değeri döndürür.
swap
İki dizenin karakter dizilerini değiştirir.
template <class Traits, class Allocator>
void swap(basic_string<CharType, Traits, Allocator>& left, basic_string<CharType, Traits, Allocator>& right);
Parametreler
left
Öğeleri başka bir dizenin öğeleriyle değiştirilecek bir dize.
right
Öğeleri ilk dizeyle değiştirilecek diğer dize.
Açıklamalar
Şablon işlevi, dizeler için özelleştirilmiş üye işlevini left.swap
(right
) yürütür ve bu da sabit karmaşıklığı garanti eder.
Örnek
// string_swap.cpp
// compile with: /EHsc
#include <string>
#include <iostream>
int main( )
{
using namespace std;
// Declaring an object of type basic_string<char>
string s1 ( "Tweedledee" );
string s2 ( "Tweedledum" );
cout << "Before swapping string s1 and s2:" << endl;
cout << "The basic_string s1 = " << s1 << "." << endl;
cout << "The basic_string s2 = " << s2 << "." << endl;
swap ( s1 , s2 );
cout << "\nAfter swapping string s1 and s2:" << endl;
cout << "The basic_string s1 = " << s1 << "." << endl;
cout << "The basic_string s2 = " << s2 << "." << endl;
}
Before swapping string s1 and s2:
The basic_string s1 = Tweedledee.
The basic_string s2 = Tweedledum.
After swapping string s1 and s2:
The basic_string s1 = Tweedledum.
The basic_string s2 = Tweedledee.
to_string
Bir değeri değerine string
dönüştürür.
string to_string(int value);
string to_string(unsigned int value);
string to_string(long value);
string to_string(unsigned long value);
string to_string(long long value);
string to_string(unsigned long long value);
string to_string(float value);
string to_string(double value);
string to_string(long double value);
Parametreler
value
Dönüştürülecek değer.
Dönüş Değeri
string
değerini temsil eden.
Açıklamalar
işlevi, işlevini çağırarak sprintf(Buf, Fmt, value)
işlevin içindeki bir dizi nesnesinde Buf
depolanan bir öğe dizisine dönüştürür. BuradaFmt
,
"%d"
türündeysevalue
int
"%u"
türündeysevalue
unsigned int
"%ld"
türündeysevalue
long
"%lu"
türündeysevalue
unsigned long
"%lld"
türündeysevalue
long long
"%llu"
türündeysevalue
unsigned long long
"%f"
veya türündeysevalue
float
double
"%Lf"
türündeysevalue
long double
işlevi döndürür string(Buf)
.
to_wstring
Bir değeri geniş dizeye dönüştürür.
wstring to_wstring(int value);
wstring to_wstring(unsigned int value);
wstring to_wstring(long value);
wstring to_wstring(unsigned long value);
wstring to_wstring(long long value);
wstring to_wstring(unsigned long long value);
wstring to_wstring(float value);
wstring to_wstring(double value);
wstring to_wstring(long double value);
Parametreler
value
Dönüştürülecek değer.
Dönüş Değeri
Değeri temsil eden geniş dize.
Açıklamalar
İşlev, işlevini çağırarak swprintf(Buf, Len, Fmt, value)
işlevin içindeki bir dizi nesnesinde Buf
depolanan öğe dizisine dönüştürürvalue
. BuradaFmt
,
L"%d"
türündeysevalue
int
L"%u"
türündeysevalue
unsigned int
L"%ld"
türündeysevalue
long
L"%lu"
türündeysevalue
unsigned long
L"%lld"
türündeysevalue
long long
L"%llu"
türündeysevalue
unsigned long long
L"%f"
veya türündeysevalue
float
double
L"%Lf"
türündeysevalue
long double
işlevi döndürür wstring(Buf)
.