-6

有没有办法获取以空字符结尾的字符串的大小?

前任。

char* buffer = "an example";

unsigned int buffer_size; // I want to get the size of 'buffer'
4

2 回答 2

7

请注意,在 C++11 中,字符串文字具有 type const char[],并且转换为char*(即指向 non-的指针const)是非法的。这说:

#include <cstring> // You will need this for strlen()
#include <iostream>

int main()
{
    char const* buffer = "an example";
    //   ^^^^^
    std::cout << std::strlen(buffer);
}

但是,由于您正在编写 C++ 而不是 C(至少这是标签所声称的),因此您应该使用 C++ 标准库中的类和算法:

#include <string> // You will need this for std::string
#include <iostream>

int main()
{
    std::string buffer = "an example";
    std::cout << buffer.length();
}

看一个活生生的例子

笔记:

如果您正在使用的 API 需要 C 字符串,则可以使用对象的c_str()成员函数std::string来检索指向 a 的char const*指针,您可以使用 std::string 对象内存缓冲区的 c_str() 成员函数,其中包含封装的 C 字符串。请注意您无法修改该缓冲区的内容这一事实:

std::string s = "Hello World!";
char const* cstr = s.c_str();
于 2013-03-16T18:05:58.433 回答
4

尝试strlen(buffer)<cstring>. 它返回您传入的字符串的长度。

于 2013-03-16T18:04:25.417 回答