null로 끝나는 문자열의 크기를 얻는 방법이 있습니까?cstring의 크기 얻기
Ex.
char* buffer = "an example";
unsigned int buffer_size; // I want to get the size of 'buffer'
null로 끝나는 문자열의 크기를 얻는 방법이 있습니까?cstring의 크기 얻기
Ex.
char* buffer = "an example";
unsigned int buffer_size; // I want to get the size of 'buffer'
공지있다. 당신이 전달하는 문자열의 길이를 반환하고 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-문자열이 필요합니다, 당신은 당신이 c_str를 사용할 수 있습니다에 char const*
포인터를 검색 할 std::string
개체의 c_str()
멤버 함수를 사용할 수 있습니다() 멤버 함수는 std :: string 개체 메모리 버퍼에 캡슐화 된 C 문자열을 포함합니다. 버퍼의 내용을 수정할 수 없다는 사실을 기억하십시오.
std::string s = "Hello World!";
char const* cstr = s.c_str();
좋습니다. 감사합니다. 나는 실제로 응용 프로그램을 작성하고있어 cstrings을 사용해야합니까? –
@ anon666 : 아니요, 필요하지 않습니다. 그리고'std :: string' 객체의'c_str()'멤버 함수를 사용하여 캡슐화 된 C 문자열을 포함하는 메모리 버퍼 인 char const * 포인터를 얻을 수 있습니다. 해당 버퍼의 내용을 수정할 수 없다는 사실을 기억하십시오. –
나는 왜 당신이 const 일을 가져 왔는지 확신하지 못합니다. 비 const'char *'를'strlen()'에 건네도 괜찮습니다. –
<cstring>
에서 strlen(buffer)
을보십시오. 그것은 문자 그대로 C++ 11 문자열 const char[]
을 입력있다
Thanks @ David. 나는 포함을 잊었다. :) – hvanbrug
감사합니다. 표준 clib에서 어떤 기능이 있는지 생각하지 않았습니다. –
네, 그게 사소한 일입니다. 당신은 분명히 구글을 시도하지 않았다. –