[英]How can I transform int to string then join with std::ranges::views?
#include <iostream>
#include <numeric>
#include <ranges>
#include <vector>
#include <string>
#include <string_view>
int main() {
auto str = (
std::views::iota(1)
| std::ranges::views::take(5)
| std::ranges::views::transform([](int x) -> std::string_view {
return std::to_string(x) + "|";
})
| std::ranges::views::join
);
for (const char ch : str) {
std::cout << ch;
}
return 0;
}
我是 cpp 函數式編程的新手。 我想生成前五個自然數並將它們轉換為字符串,然后加入它們並打印出來。
如果我使用std::string
作為 lambda 的返回類型進行轉換,它會在編譯時引發很多錯誤。 我想我應該把它改成std::string_view
。 我改變了,它編譯沒有編譯錯誤。 However, if I use std::string_view
there, the lambda function returns only reference for string, and translated string that on stack memory is removed on memory when lambda ends. 因此,該程序不打印任何內容。
我該如何解決?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.