我有一个 Visual Studio 2008 C++03 应用程序,我想在其中从 std::string 复制到 char 数组,但我需要 char 数组以空终止,即使它必须截断字符串才能这样做。
例如,这可以按需要工作:
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
有没有更短、更有效的方法来做到这一点?
谢谢