TCHAR[256]
과 같이 버퍼의 주소를 사용하는 Win32 함수가 많이 있으며 그 버퍼에 일부 데이터를 씁니다. 버퍼의 크기보다 작거나 전체 버퍼 일 수 있습니다.char [] 버퍼를 사용하는 Win32 함수로 std :: string을 혼합하는 방법은 무엇입니까?
종종 스트림이나 파이프에서 데이터를 읽는 것과 같이 루프로 호출합니다. 결국이 데이터를 검색하기 위해 모든 반복 호출에서 전체 데이터가있는 문자열을 효율적으로 반환하고 싶습니다. 나는 + =가 Java와 비슷한 방법으로 최적화되었거나 C#의 StringBuffer.append()
/StringBuilder.Append()
메쏘드로 메모리 대신에 속도를 선호하기 때문에 std::string
을 사용하려고 생각했다.
그러나 std::string
과 Win32 함수를 공동으로 사용하는 것이 가장 좋은 방법인지는 모르겠지만이 함수는 char[]
부터 시작합니다. 어떤 제안?
TCHAR은 UNICODE 매크로의 값에 따라 변경됩니다. UNICODE가 정의되면 문자열은 wchar_t *가되고 대신 std :: wstring을 사용해야합니다. –
문자열을'std :: string' 내부 버퍼에 직접 쓰는 것은 위험 할 수 있습니다. 왜냐하면 문자열은 길이를 바꿀 수있는 길이를 저장하기 때문에 위험 할 수 있습니다. –
Idan이 정확합니다. 문자열 버퍼에 쓸 함수에 std :: string을 사용하지 마십시오. – jmucchiello