elite战队吧 关注:12贴子:931
  • 5回复贴,共1

c++20可能是用c++写web api最好的一个初始版本

只看楼主收藏回复

有几点是需要关注的
范围库
--提供了类似C#的linq,linq能像sql那样在代码中编写查询语句,这些查询语句是可以转化成sql查询语句来执行的(Entity Framework),而linq最基础的调用函数的形式跟范围库的是类似的,以wiki上的实例代码为例子,其中for (int i : ints | std::view::filter(even) | std::view::transform(square))这部分用linq来写相当于select i in ints where even(i) select square(i),看上去是差不多的,所以c++是可以通过范围库去执行数据库查询的
char8_t
--众所周知,现在大多数网站都是用utf8来传输的,而在char8_t出来之前,c++本身也可以做到utf8字符串的读写,但是在一些情况下必须要用一些不合理的做法才能正确读写utf8,比如众所周知的中文占两个字符这个说法,本身就是错误的(但是已经推广开来了),又比如codecvt完全不知道你丢给他的char是gbk(以windows中文系统)还是utf8,再加上codecvt_utf8_utf16的退出,其实整个c++17版本对于utf8的支持是极其匮乏的,以致在我在写不同类型字符串转换的时候,必须给use_facet加上一个locale参数才称得上可以在char16_t和char之间进行utf8转换,于是在微软的开源库cpprestsdk里(以上一次的使用情况下)用的还是wstring(宏定义)估计也是有这方面的考虑,char8_t一出,应该就能顺势走向网络传输utf8的道路了
协程
--其实一开始我不知道协程是什么玩意,后来知道了觉得这个概念适用情况很少,再深入一点,我觉得是可以用来网络传输的(除了进度条的功能之外),当然我不清楚具体要怎么用(因为wiki上没有示例,论文上也没有示例,都是实现看不懂),所以这方面就不说了


IP属地:广东1楼2019-04-14 12:03回复
    忽然想起来这个范围库写法有个缺点,不能把lambda写在for循环里,不然画美不看


    IP属地:广东2楼2019-04-15 20:07
    回复
      a


      IP属地:广东4楼2019-06-16 15:46
      回复
        C++ 标准库对字符串的处理功能还是太少了。 (我只用过C++11 之前的版本)


        IP属地:湖南5楼2019-08-05 10:45
        收起回复