Win32 API 的 GetLogicalDriveStrings 返回一个 C 字符串缓冲区,看起来像:
"C:\<NULL>D:\<NULL>E:\<NULL><NULL>"
. 我想返回一个字符串向量并考虑使用 istream 迭代器:
std::vector< std::string > foo()
{
std::unique_ptr<char[]> buffer( new char[1024+1] );
buffer[1024] = '\0';
const auto length = GetLogicalDriveStrings( 1024, buffer.get() );
std::istringstream ss( std::string( buffer.get(), buffer.get()+length ) );
return std::vector< std::string >(
std::istream_iterator<std::string>( ss ),
std::istream_iterator<std::string>()
);
}
这怎么总是返回一个大小为 1 的向量。我想 istream_iterator 认为当他找到一个空字节时它的工作已经完成。有没有办法做我想做的事?