17 Ağustos 2020 Pazartesi

std::string data() Metodu

Giriş
İmzası şöyle.
const charT* data() const noexcept;
C++17'den sonra bu metod kaldırılarak const olmayan metod haline getirildi. İmzası şöyle
charT* data() noexcept;

C++11'den sonra bu metod da null terminated bellek alanı dönmeye başladı. Açıklaması şöyle
Previously that was std::string::c_str()'s job, but as of C++11, data() also provides it...
Örnek
Elimizde şöyle bir kod olsun. C++11 ve C++17 ile farkı metodlar çağrılır.
void func(char* data)
{
  cout << data << " is not const\n";
}

void func(const char* data)
{
  cout << data << " is const\n";
}

int main()
{
  string s = "xyz";
  func(s.data());
}
Açıklaması şöyle
The return type of string::data changes from const char* to char* in C++ 17. That could certainly make a difference
...
A bit contrived but this legal program would change its output going from C++14 to C++17.
Örnek
Şöyle yaparız.
std::string buff = ...;
const char* dst_ptr = buff.data();

Hiç yorum yok:

Yorum Gönder