我使用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可以接受它,而我们其余的人都可以使用它。 –
别人可以把它写出来,我已经有足够的代表 –