При використанні C++23 та його нової функції views::join_with з’являється можливість об’єднати послідовність елементів у рядок за допомогою певного роздільника. Однак, чи можна використовувати багатохсимвольний роздільник?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <format> #include <stdio.h> #include <string> #include <algorithm> #include <ranges> using namespace std; int main() { const string a[2] = {"6", "7"}; const string buffer1 = a | views::join_with('\n') | ranges::to<string>(); // ОК printf("%s", buffer1.c_str()); const string buffer2 = a | views::join_with(",\n") | ranges::to<string>(); // Помилка printf("%s", buffer2.c_str()); return 0; } |
У коді вище намагаємося використати views::join_with з двома рядками та роздільником “,\n”, що має означати кому і символ нового рядка. Проте компілятор повертає помилку, оскільки немає підтримки використання багатохсимвольного роздільника з цією функцією у версії C++23. Помилка, що повертається компілятором gcc 14, вказує на недопустимість використання оператора | з заданими типами операндів.