c++ 使用 std::copy 将 istream 复制到 char* 缓冲区
c++ using std::copy to copy an istream to a char* buffer
有没有办法将 std::istream 复制到由 returns char* 的“data()”方法访问的数据缓冲区?例如,下面的代码示例。它会导致段错误。我知道我可以在此示例中使用 std::back_inserter,但我的目标不是最终复制到矢量。
#include <sstream>
#include <algorithm>
#include <iterator>
#include <vector>
int main() {
std::vector<char> vec;
std::istringstream ss("foobar");
std::copy(std::istream_iterator<char>(ss), std::istream_iterator<char>
(),vec.data());
}
只要预先分配了足够的存储空间,复制就没有问题:
#include <sstream>
#include <algorithm>
#include <iterator>
#include <vector>
int main()
{
std::vector<char> vec(6); //note what happens here!
std::istringstream ss("foobar");
std::copy(std::istream_iterator<char>(ss), std::istream_iterator<char>
(), vec.data());
}
有没有办法将 std::istream 复制到由 returns char* 的“data()”方法访问的数据缓冲区?例如,下面的代码示例。它会导致段错误。我知道我可以在此示例中使用 std::back_inserter,但我的目标不是最终复制到矢量。
#include <sstream>
#include <algorithm>
#include <iterator>
#include <vector>
int main() {
std::vector<char> vec;
std::istringstream ss("foobar");
std::copy(std::istream_iterator<char>(ss), std::istream_iterator<char>
(),vec.data());
}
只要预先分配了足够的存储空间,复制就没有问题:
#include <sstream>
#include <algorithm>
#include <iterator>
#include <vector>
int main()
{
std::vector<char> vec(6); //note what happens here!
std::istringstream ss("foobar");
std::copy(std::istream_iterator<char>(ss), std::istream_iterator<char>
(), vec.data());
}