我使用std :: copy時遇到了一些奇怪的行爲。隨着C + + std ::複製結果不同於字符串構造函數
std::vector<std::string> chosenIDs{...};
for (const auto& x : chosenIDs) {
std::string strID("");
std::copy(std::begin(x), std::find(std::begin(x), std::end(x), '.'), std::begin(strID));
std::cout << strID << "\n";
}
的strID字符串包含它不應該的人物,但是
std::vector<std::string> chosenIDs{...};
for (const auto& x : chosenIDs) {
std::string strID(std::begin(x), std::find(std::begin(x), std::end(x), '.'));
std::cout << strID << "\n";
}
作品完全罰款。我很清楚,我應該使用第二種方法,但它仍然困擾着我爲什麼第一個片段中的行爲與第二個片段中的行爲不同。
我使用GCC 5.4.0
的'copy'寫出strID'的'界('copy'不調整目的地) 。您可以使用'std :: back_inserter(strID)'作爲第三個參數 –
@ M.M:將其寫爲答案,然後OP可以接受它,而我們其餘的人都可以使用它。 –
別人可以把它寫出來,我已經有足夠的代表 –