std ::stringからchar配列にコピーしたいVisualStudio2008 C ++ 03アプリケーションがありますが、文字列を切り捨てる必要がある場合でも、char配列をnullで終了する必要があります。
これは、たとえば、必要に応じて機能します。
inline void CopyAndNullTerminate( const std::string& source,
char* dest,
size_t dest_size )
{
source.copy( dest, dest_size );
using std::min;
char* end = dest + min( dest_size - 1, source.size() );
*end = '\0';
}
int main()
{
enum{ MAX_STRING_SIZE = 15 };
char dest[ MAX_STRING_SIZE ];
std::string test = "This is a test";
CopyAndNullTerminate( test, dest, MAX_STRING_SIZE );
assert( strcmp( test.c_str(), dest ) == 0 );
return 0;
}
例: http: //ideone.com/0EBYb
これを行うためのより短く、より効率的な方法はありますか?
ありがとう