Просто убедитесь, что это действительно ошибка, а не то, что я, возможно, неправильно понял о функциональности std :: quoted
Вот код, который должен, по моему мнению, избегать двойных кавычек с двойными кавычками и затем отбрасывать их обратно в исходную строку:
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
int main()
{
std::string s = R"(something"something)";
std::cout << "Original: \t" << s << std::endl;
std::ostringstream oss;
oss << std::quoted(s, '"', '"');
std::string s1 = oss.str();
std::cout << "Quoted: \t" << s1 << std::endl;
std::istringstream iss(s1);
std::string s2;
iss >> std::quoted(s2, '"', '"');
std::cout << "Unquoted: \t" << s2 << std::endl;
return 0;
}
Ожидаемый результат:
Original: something"something
Quoted: "something""something"
Unquoted: something"something
Однако это то, что я получаю в VS2017 15.6.6:
Original: something"something
Quoted: "something""something"
Unquoted: something
Может ли кто-нибудь подтвердить, что это ошибка?
ОБНОВИТЬ:
Хорошая новость. Билет, который я подал в MS, получил как fixed
.