有沒有辦法將 std::istream 復制到由回傳 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());
}
uj5u.com熱心網友回復:
只要預先分配了足夠的存盤空間,復制就沒有問題:
#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());
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/460423.html
下一篇:復制捕獲移動物件的lambda
