有没有办法获取以空字符结尾的字符串的大小?
前任。
char* buffer = "an example";
unsigned int buffer_size; // I want to get the size of 'buffer'
有没有办法获取以空字符结尾的字符串的大小?
前任。
char* buffer = "an example";
unsigned int buffer_size; // I want to get the size of 'buffer'
请注意,在 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();
尝试strlen(buffer)
从<cstring>
. 它返回您传入的字符串的长度。