有沒有辦法獲得以空字符結尾的字符串的大小?獲取cstring的大小
Ex。
char* buffer = "an example";
unsigned int buffer_size; // I want to get the size of 'buffer'
有沒有辦法獲得以空字符結尾的字符串的大小?獲取cstring的大小
Ex。
char* buffer = "an example";
unsigned int buffer_size; // I want to get the size of 'buffer'
注意,在C++ 11字符串文字具有類型const char[]
,並轉化爲char*
(即指針到非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();
}
查看live example。
注:
如果您正在使用的API需要C字符串,你可以使用一個std::string
對象的c_str()
成員函數來檢索char const*
指針可以使用c_str ()成員函數的std :: string對象內存緩衝區包含封裝的C字符串。請注意,您無法修改該緩衝區的內容:
std::string s = "Hello World!";
char const* cstr = s.c_str();
的任何功能好的,謝謝。我其實正在寫一個贏取應用程序,我需要使用cstrings,或者我? – 2013-03-16 18:14:16
@ anon666:不,你不需要。你可以使用'std :: string'對象的'c_str()'成員函數來得到一個'char const *'指針,它是一個包含封裝C字符串的內存緩衝區。請注意,您無法修改該緩衝區的內容。 – 2013-03-16 18:17:01
我不知道你爲什麼提出了常量的事情。將非const char *'傳遞給'strlen()'是完全正確的。 – 2013-03-16 18:17:44
嘗試strlen(buffer)
從<cstring>
。它返回你在傳遞字符串的長度。
謝謝@David。我忘了包括包含。 :) – hvanbrug 2013-03-16 18:12:59
謝謝,我沒有想到要檢查標準克隆 – 2013-03-16 18:15:35
是的,存在並且很重要。你顯然沒有試圖谷歌這一點。 – 2013-03-16 18:02:58