c++ data函數(shù)返回值是什么類型

c++
小樊
82
2024-09-15 17:25:09

在 C++ 中,data() 函數(shù)通常與字符串或容器相關(guān)

對(duì)于 std::stringdata() 函數(shù)返回一個(gè)指向字符數(shù)組的常量指針(const char*)。這個(gè)指針指向字符串的第一個(gè)字符,并以空字符(null-terminator, '\0')結(jié)尾。

#include<iostream>
#include<string>

int main() {
    std::string str = "Hello, World!";
    const char* ptr = str.data();

    std::cout << "String: "<< str<< std::endl;
    std::cout << "Pointer to the first character: "<< static_cast<void*>(ptr)<< std::endl;
    std::cout << "First character: " << *ptr<< std::endl;

    return 0;
}

對(duì)于其他容器(如 std::vectorstd::array 等),data() 函數(shù)返回一個(gè)指向容器內(nèi)第一個(gè)元素的指針。指針的類型取決于容器中元素的類型。例如,對(duì)于 std::vector<int>,data() 函數(shù)將返回一個(gè)指向整數(shù)的指針(int*)。

#include<iostream>
#include<vector>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    int* ptr = vec.data();

    std::cout << "Vector size: "<< vec.size()<< std::endl;
    std::cout << "Pointer to the first element: "<< static_cast<void*>(ptr)<< std::endl;
    std::cout << "First element: " << *ptr<< std::endl;

    return 0;
}

請(qǐng)注意,data() 函數(shù)返回的指針可能會(huì)在容器發(fā)生修改時(shí)失效。因此,在使用指針之前,請(qǐng)確保容器保持不變。

0