1

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 认为当他找到一个空字节时它的工作已经完成。有没有办法做我想做的事?

4

0 回答 0