Basic String Operations

  • s1 = s2 -> atama
  • s1 += s2 -> sonuna ekleme
  • s1 + s2 -> birleştirme
  • s1 == s2 -> karşılaştırma
  • str1.c_str() -> C style string döndürür (const char*)

substr()

string substr (size_t pos = 0, size_t len = npos) const;

Returns a newly constructed string object with its value initialized to a copy of a substring of this object. [1]

  • pos -> başlangıç indeksi
  • len -> başlangıçtan itibaren kaç karakter alınacağı

Constructors

	string a; 			       // 
	string b = "Hello";	   // Hello
	string c(5, '-');	     // -----
	string d{ 'H','i' };   // Hi
	string e(b, 2);		     // llo
	string f(b, 2, 2);	   // ll

	cout
		<< a << '\n'
		<< b << '\n'
		<< c << '\n'
		<< d << '\n'
		<< e << '\n'
		<< f << '\n';

Searching Strings

find & rfind

Bir string içerisinde aranması istenilen karakter veya string’in indeksini döndürür. Eğer aranan şey string içerisinde yoksa std::string::npos döndürür.

size_t find (const string& str, size_t pos = 0) const noexcept;
size_t find (const char* s, size_t pos = 0) const;
size_t find (const char* s, size_t pos, size_type n) const;
size_t find (char c, size_t pos = 0) const noexcept;
  • str/s/c: aranan karakter, string
  • pos: aramaya başlanacak indeks
  • n: aranacak_string.substr(0,n); (Length of sequence of characters to match.) [2]

rfind, find gibi çalışır. Tek farkı sondan başa doğru tarama yapar

	string a{ "Hello world" };
	cout << a.rfind("o", 8) << endl; // 7
	cout << a.rfind("o", 7) << endl; // 7 
	cout << a.rfind("o", 6) << endl; // 4

	cout << a.find("o", 3) << endl; // 4
	cout << a.find("o", 4) << endl; // 4
	cout << a.find("o", 5) << endl; // 7

find_first/last_of & find_first/last_not_of

Verilen karakter kümesinin elemanlarını string içinde arar. not ‘lı versiyonunda ise olmama durumuna bakar.

Adding Elements

append()

string’in sonuna ekleme yapar

string& append (const string& str);
string& append (const char* s);
// substr
string& append (const string& str, size_t subpos, size_t sublen = npos);
// s array'ındaki ilk n elemanı ekle 
string& append (const char* s, size_t n);
// n tane c characteri ekle 
string& append (size_t n, char c);
// belli bir aralıktaki değerleri ekler
template <class InputIterator>   string& append (InputIterator first, InputIterator last);
// 
string& append (initializer_list<char> il);

insert()

string’in verilen pozisyonuna ekleme yapar

string (1)	
 string& insert (size_t pos, const string& str);
 
substring (2)	
 string& insert (size_t pos, const string& str, size_t subpos, size_t sublen = npos);
 
c-string (3)	
 string& insert (size_t pos, const char* s);
 
buffer (4)	
 string& insert (size_t pos, const char* s, size_t n);
 
fill (5)	
 string& insert (size_t pos,   size_t n, char c);
 iterator insert (const_iterator p, size_t n, char c);
 
single_character (6)	
iterator insert (const_iterator p, char c);

range (7)	
template <class InputIterator>iterator insert (iterator p, InputIterator first, InputIterator last);

initializer_list (8)	
 string& insert (const_iterator p, initializer_list<char> il);	

DİKKAT! Ekleme yapılmadan önce tanımlanan iteratörler, ekleme yapıldıktan sonra geçersiz hale gelebilir. Çünkü containerın hacmi ve dolayısıyla bellekteki lokasyonu değişebilir.

Removing Elements

erase()

Verilen aralıktaki karakterleri siler

sequence (1)	
 string& erase (size_t pos = 0, size_t len = npos);
character (2)	
iterator erase (const_iterator p);
range (3)	
iterator erase (const_iterator first, const_iterator last);

replace()

Verilen aralıktaki karakteri başka bir karakterlerine yerine başka bir karakter dizisi ekler

string (1)	
string& replace (size_t pos, size_t len, const string& str);
string& replace (const_iterator i1, const_iterator i2, const string& str);

substring (2)	
string& replace (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen = npos);

c-string (3)	
string& replace (size_t pos, size_t len, const char* s);
string& replace (const_iterator i1, const_iterator i2, const char* s);

buffer (4)	
string& replace (size_t pos, size_t len, const char* s, size_t n);
string& replace (const_iterator i1, const_iterator i2, const char* s, size_t n);

fill (5)	
string& replace (size_t pos, size_t len, size_t n, char c);
string& replace (const_iterator i1, const_iterator i2, size_t n, char c);

range (6)	
template <class InputIterator>  string& replace (const_iterator i1, const_iterator i2,                   InputIterator first, InputIterator last);

initializer list (7)	
string& replace (const_iterator i1, const_iterator i2, initializer_list<char> il);

Converting between Strings and Numbers

to_string()

Verilen sayıyı string’ ‘e çevirir

string to_string (int val);

stoi()

Verilen string’i, integer’a çevirir. stof, stod … gibi benzer fonksiyonlar bulunmaktadır. 3. paremetresi sayının tabanını, ikinci parametresi ise string içerisindeki sayıdan sonraki ilk karakterin indeksini döndürür.

  std::string str_dec = "2001, A Space Odyssey";
  std::string str_hex = "40c3";
  
  std::string::size_type sz;   // alias of size_t
  
  int i_dec = std::stoi (str_dec,&sz);
  int i_hex = std::stoi (str_hex,nullptr,16);
  
  std::cout << str_dec << ": " << i_dec << " and [" << str_dec.substr(sz) << "]\n";
  std::cout << str_hex << ": " << i_hex << '\n';
  
  // 2001, A Space Odyssey: 2001 and [, A Space Odyssey]
  // 40c3:  16579

Miscellaneous String Operations

data()

Returns a pointer to an array that contains a null-terminated sequence of characters (i.e., a C-string) representing the current value of the string object.

swap()

a, b stringlerin yerlerini değiştirir. Normal swap operasyonuna göre daha verimlidir.

Character Functions

Kaynaklar

  1. https://cplusplus.com/reference/string/string/substr/
  2. https://cplusplus.com/reference/string/string/find/

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *