V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nannanziyu
V2EX  ›  C++

Windows 一分钟使用 C++ 发送 Http 请求

  •  
  •   nannanziyu · 2021-08-20 12:03:19 +08:00 · 5955 次点击
    这是一个创建于 528 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有人说 c++ 发 http 请求麻烦,我不太认同,我认为一分钟内能搞定的事情,无论如何也谈不上“麻烦”
    为了帮助后来人,方便以后英文不太好,常使用中文搜索的同学找到答案,我单独发到这里

    1. VS 新建一个 Cpp console 工程,工程右键 -> Manage nuget packager
    2. 搜索 cpprestsdk,并 点击 install

    3. 复制以下代码替换 main.cpp ,然后 F5

    #include <iostream>
    #include <cpprest/http_client.h>
    int main()
    {
    web::http::client::http_client client(U("https://postman-echo.com/get?a=b"));
    auto rsp = client.request(web::http::methods::GET).get();
    auto body = rsp.extract_string().get();
    std::wcout << rsp.status_code() << "\n" << body << std::endl;
    }


    全程录屏:

    SEO Area:
    C++ 发 http 请求
    Cpp 发 http 请求
    怎么用 Cpp 发 http 请求
    http 请求 cpp
    http 请求 c++
    第 1 条附言  ·  2021-08-20 13:46:19 +08:00

    顺便发一下 Mac 下简单发送 Http 请求的方法 简单的方法有很多,比如 brew install openssl ,然后使用 cpp-httplib 提供一个 vcpkg 的方法: 流程就是

    1. 通过 clone 下载 vcpkg
    2. run vcpkg install cpprestsdk:x64-osx 来build cpprestsdk
    3. 生成代码,run g++ 来 build

    生成一个 shell 脚本,直接run 就好

    #!/bin/sh
    git clone https://github.com/microsoft/vcpkg.git
    ./vcpkg/bootstrap-vcpkg.sh
    ./vcpkg/vcpkg install x64-osx
    rm -rf ./httptest
    mkdir httptest
    cd httptest
    echo '#include <iostream>
    #include <cpprest/http_client.h>
    int main()
    {
    web::http::client::http_client client(U("https://postman-echo.com/get?a=b"));
    auto rsp = client.request(web::http::methods::GET).get();
    auto body = rsp.extract_string().get();
    std::cout << rsp.status_code() << "\\n" << body << std::endl;
    }' > main.cpp
    
     g++  main.cpp -o main -std=c++17 \
     -I../vcpkg/installed/x64-osx/include \
     -framework Security\
     -framework AppKit\
     -L../vcpkg/installed/x64-osx/lib \
     -lcpprest\
     -lssl\
     -lcrypto
    
     ./main
    

    alt

    92 条回复    2021-12-25 17:15:47 +08:00
    zakokun
        1
    zakokun  
       2021-08-20 12:24:09 +08:00   ❤️ 19
    我全程看完,只是觉得承认 CPP 门槛相对更高又不是什么丢人的事情,你这么纠结干啥?那帖子都是默认楼主零基础吧。我假设自己是新人,从你发的这些来看,vs 这东西好几 G,安装要激活码的,我从哪里弄?我是 MacOS 系统 vs for Mac 和你发的界面不一样的,相对于脚本语言就是有门槛啊。 顺便说,看到 web::http::client::http_client clien 这么长一串我就笑出来了
    Jwyt
        2
    Jwyt  
       2021-08-20 12:28:34 +08:00 via Android
    @zakokun 我记得 vs 社区版的已经免费很久了吧。。
    nannanziyu
        3
    nannanziyu  
    OP
       2021-08-20 12:30:57 +08:00   ❤️ 1
    @zakokun
    我尽量心平气和哈
    1. vs 这东西好几 G,安装要激活码的,我从哪里弄
    VS 社区版 14 年就免费了,距今已经 7 年
    2. 看到 web::http::client::http_client clien 这么长一串我就笑出来了
    namespace 的概念,我都不知道怎么跟你解释
    没有域隔离,就会变得像 Objc 一样,类名变得冗长无比
    最后,要争执,去隔壁贴争执吧,这贴我只是备份方便后人搜索的
    然后多少有点基础知识再争执吧,我真的不知道怎么跟你说
    xarthur
        4
    xarthur  
       2021-08-20 12:37:39 +08:00   ❤️ 17
    从原帖看到这个帖子,觉得是楼主着急了……
    johnkiller
        5
    johnkiller  
       2021-08-20 13:03:05 +08:00
    。。。
    nannanziyu
        6
    nannanziyu  
    OP
       2021-08-20 13:03:54 +08:00   ❤️ 3
    @xarthur
    剧场版《打滚》
    A:C++ 发送 http 请求太麻烦了
    B:不麻烦啊,简单搜索几分钟就有答案了,如图如图
    A:要搜索还不麻烦,靠搜索什么需求都完成了。只有直接复制粘贴的答案才是不麻烦
    B:好吧,再给你一个直接复制粘贴的答案,一分钟就能完成,如图如图如视频
    A:擦,B,你急了
    B:……
    singerll
        7
    singerll  
       2021-08-20 13:34:51 +08:00 via Android
    非程序员,会写几行 python 和 shell 。我看了只能说,确实比 python 和 shell 门槛高。隔壁销售不懂啥是内存,啥是接口,也会写两行 python,但我觉得写不了 cpp
    litmxs
        8
    litmxs  
       2021-08-20 13:46:12 +08:00 via Android   ❤️ 6
    上个帖子别人说了句 C++门槛高,就被楼主喷无知
    我看楼主只是想通过贬低别人找点儿优越感罢了
    darknoll
        9
    darknoll  
       2021-08-20 13:50:08 +08:00   ❤️ 3
    楼主应该是个老 windows 程序员吧,咋说呢,c++这玩意确实跟不上时代了,唯一的优势是运行效率高,但是现在都是 web 了,速度瓶颈在于带宽。可能很多老 c++开发人员确实都比较自负,认为自己能力远超常人,但是我反而觉得我司 c++大佬很多新技术都不懂,眼界太窄了。还是得紧跟时代啊。
    erlangshanxia
        10
    erlangshanxia  
       2021-08-20 13:52:07 +08:00   ❤️ 1
    我觉着 c++最麻烦的是字符串处理。
    nannanziyu
        11
    nannanziyu  
    OP
       2021-08-20 13:55:12 +08:00   ❤️ 2
    @darknoll
    你其实看看我以前的贴子
    我主语言是 java
    我主赚钱语言是 c#,之前做 UWP 年入差不多两百,当时安利大家做 UWP 的帖子在这里 https://v2ex.com/t/317307?p=1,里面收入 dashboard 都有,当时是真心安利,应该受益的人也不少;至少我同事里面跟我有好多人赚到了钱
    关于语言:
    我前后端很多语言都熟悉,毕竟做的年份多,加上爱好

    语言是工具,每种工具都有适合自己的地方
    Rust 也没有原生 http 库,C 也没有
    语言各有优略,你说的这几门语言除了 golang,我都写过十几年,java 还是我的主吃饭语言
    java 裹脚布
    python 纸质书翻页需要游标卡尺
    go 泛型都没有,1M 的源代码有 500k 的 if err != nil
    javascript 弱类型大型项目管理困难,ts 救了无数人的命
    如果只说语言优劣,那除了 ts 和 c# 别的都没有意义了?
    还是那句话,语言是工具,每种工具都有适合自己的地方
    wangchengwu
        12
    wangchengwu  
       2021-08-20 13:55:35 +08:00
    cpprestsdk 这东西是微软弄得,嵌入式移植不动。
    nannanziyu
        13
    nannanziyu  
    OP
       2021-08-20 14:04:10 +08:00
    @darknoll
    https://v2ex.com/t/761625#reply42
    这个帖子里 42 楼是我用前端 typescript 做的播放器
    https://v2ex.com/t/411218#reply222
    这个帖子是 Swift 写的工具
    至于主语言 Java,我写了快 20 年了
    go/ python/ c#/rust,我都比这个站大部分人用的熟
    你做多了就知道,语言真的只是个工具,看看文档就能干活了
    darknoll
        14
    darknoll  
       2021-08-20 14:05:36 +08:00   ❤️ 1
    @nannanziyu 得,我就不该回这帖,反而让楼主大秀了一波。
    nannanziyu
        15
    nannanziyu  
    OP
       2021-08-20 14:06:16 +08:00   ❤️ 2
    @darknoll
    不是我帮 c++说句话,我就是喜欢 c++,连党卫军都来了
    我只是说现在 2021 年了,用 c++发个 http 请求并不麻烦,我也给出证据了
    我根本不喜欢 c++,我自己喜欢的是 ts 和 c#
    nannanziyu
        16
    nannanziyu  
    OP
       2021-08-20 14:09:16 +08:00
    @darknoll
    在一个谁都不认识谁的论坛有什么好秀的
    当年安利 UWP,也是好多人说我秀,“年入两百万了不起啊”
    我当时只是希望更多人做,把市场做大,自己收入更多一些而已
    我要秀,我去找个妹子秀不好嘛……
    这次更是,用 c++发个 http'请求有什么好秀的啊
    我只是想说“用 c++发个 http 请求并不麻烦”啊
    xylxAdai
        17
    xylxAdai  
       2021-08-20 14:15:11 +08:00   ❤️ 1
    怎么说呢,对一个新手来说,确实难,我用 c++四五年了,但是还是觉得相比于其他语言来说,就算拿不算简单的 java 来说,c++的包引入都复杂了一个级别。
    你能找到这个,是因为你和我一样对 c++太熟悉了,对一个 c++新手来说,这些过程是很难找到或者实践的。
    abersheeran
        18
    abersheeran  
       2021-08-20 14:29:14 +08:00   ❤️ 1
    作为一个只在学校里写过 C++ 的人来说句我的感受,C++对于我来说最大的困难是没有一个好用的包管理器以及简单易用的编译工具。所以我在入门阶段就直接放弃了,现在大抵是只能在 VS 、DevC 里写点代码来解决 leetcode 上的题目这个水平。

    我说一下我觉得好用的包管理器,比如 npm 、cargo 这种。简单易用的编译工具,go build 、cargo build 。

    包管理器不是有就行的,比如 Python 那个 pip 我就觉得相当一般,最近他们整了个新活,无限尝试下载 package 搞得我 CD 都废了。编译工具也不是能用就行的,cargo 和 make 一比就知道谁优谁劣了。
    ZField
        19
    ZField  
       2021-08-20 14:30:50 +08:00
    为啥不直接用 curl 发送请求?
    ZField
        20
    ZField  
       2021-08-20 14:31:12 +08:00
    @ZField #19 没读题 抱歉= =
    pocarisweat
        21
    pocarisweat  
       2021-08-20 14:35:50 +08:00
    其实要是今天写一个新的 Cpp 库,直接面向 C++20 就行。因为那些用旧版编译器的肯定已经有自己接入的那堆库了。然后接入到各种 Cpp 包管理器里。
    其实 C++包管理器这件事,这些年来一直有人在搞。流行不起来的原因还是用 Cpp 开新项目的太少了。
    mrsecond
        22
    mrsecond  
       2021-08-20 15:30:28 +08:00
    单纯提问,(本人在校软工研究生)。我想问下楼主学 Cpp 还有前途嘛,感觉好多人都在唱衰 Cpp,本人对 Go 和 Cpp 都挺感兴趣的,Cpp 和 Qt 学的稍微深入一点。有点担心到时候 Cpp 的工作岗位越来越少
    nannanziyu
        23
    nannanziyu  
    OP
       2021-08-20 16:25:49 +08:00   ❤️ 3
    @mrsecond
    个人意见,仅供参考哈
    先列列现在行业的语言可选项:
    现在移动客户端平台饱和,所以移动客户端限定语言 Objc Swift 之类的可以暂时排除(
    桌面客户端现在都在往跨平台方向走,虽然人人讨厌 electron,但是桌面客户端目前就是 QT or Electron (MAUI 前景不明)
    后端前景一直不错,五大主流语言 java go python node.js PHP 外加 dotnetcore,找工作的话,我国其实通常就是 Java 和 go
    前端三大框架+ Svelte,Emberjs,但我国找工作其实就是 Vue

    其实游戏后端和交易平台撮合引擎都是用 CPP,但是刚毕业肯定做不了,不考虑;游戏客户端也可以排除; AI 也排除
    另外目前因为直播行业火,所以音视频开发火爆,薪水开的非常高,这个是 C++领域,不过音视频要的相关知识储备多,刚毕业也可以排除

    所以个人意见,仅供参考哈
    目前 nodeJS 相关的技术里,网页前端不说了,后端可以做,客户端 Electron 也可以做
    如果你没有其他基础,学 nodeJS+Vue,短时间用来找工作比较合适
    之后学一门脚本语言,shell /powershell /python
    Qt 的话,说实话,QML 几乎没看到有工作需求,QWidget 的话有,但工作范围还是有点少。
    个人意见,仅供参考哈
    0o0o0o0
        24
    0o0o0o0  
       2021-08-20 16:31:32 +08:00
    1.语法比较复杂,即时复制粘贴,也是需要读懂和使用的,否则也没有意义。
    2.没有内置库或者官方库,虽然有很多高 star 的库,但是仍然是比具有官方库的语言来说麻烦。
    这是让人觉得麻烦的主要原因。

    其次是“麻烦”不等于“不会”。

    就像大数乘法,c++和其他语言都可以实现,但是用 python 就是更方便。

    就像洗碗麻烦吗,对于有些人来说麻烦,对于有些人来说不麻烦,麻烦的就去使用洗碗机,或者忍着麻烦去洗碗,觉得不麻烦就开开心心洗碗。

    最后麻烦不是贬义,只是每种语言所擅长的事情不同。

    就像用 c++去开发 web,可以吗,可以,麻烦吗,对于大部分人来说就是很麻烦呀。
    nicevar
        25
    nicevar  
       2021-08-20 16:43:25 +08:00
    有些人就是这样,喜欢胡搅蛮缠,连装个 vs 都要怪到 c++头上,这是什么逻辑,nodejs 那套玩得不比 c++还麻烦?
    nannanziyu
        26
    nannanziyu  
    OP
       2021-08-20 16:51:16 +08:00   ❤️ 2
    @nicevar
    > 有些人就是这样,喜欢胡搅蛮缠,连装个 vs 都要怪到 c++头上,这是什么逻辑,nodejs 那套玩得不比 c++还麻烦?

    是呀,也是无语
    1. 关键是人能力差,自尊心还超级强,说一句“多思考下”,就是侮辱他们了
    2. 给出搜索思路,不行,麻烦,要直接复制粘贴的答案;给出直接复制粘贴三行的代码,不行,我看不懂不算。大数乘法 cpp 就是比 python 麻烦。 我又没说大数乘法,我说的是“发个简单的 http 请求”不麻烦
    3. 然后说你只会 c++,古董程序员,被时代淘汰了;给出擅长其他语言的证据以后,又,秀,秀什么秀
    真是无语
    yolee599
        27
    yolee599  
       2021-08-20 17:04:44 +08:00
    很多人觉得现在流行的是 web,但是那玩意文件又大又吃配置,运行还不稳定。我是不喜欢
    nmap
        28
    nmap  
       2021-08-20 17:09:42 +08:00
    UWP 是什么?
    billlee
        29
    billlee  
       2021-08-20 17:10:24 +08:00
    @nannanziyu 游戏、交易、音视频这些需要领域知识的,不要校招反而靠社招吗?感觉社招似乎也不容易找到有相关经验的人啊
    o00o
        30
    o00o  
       2021-08-20 17:12:22 +08:00
    @xarthur 来个原帖地址🐶,谢谢
    leitwolf
        31
    leitwolf  
       2021-08-20 17:12:34 +08:00 via Android
    我光看那些符号都头大了
    lakehylia
        32
    lakehylia  
       2021-08-20 17:14:45 +08:00
    相对于 http,我觉得 c++的二进制管理相当的烦。尤其是 stl,版本对不上就编译不通过,编译通过了,跑起来就各种崩。。。烦
    siyi412009
        33
    siyi412009  
       2021-08-20 17:45:59 +08:00
    真好 我也想学语言
    xarthur
        34
    xarthur  
       2021-08-20 17:47:21 +08:00 via iPhone
    @o00o 楼主的历史发言里就有啊……
    ReferenceE
        35
    ReferenceE  
       2021-08-20 17:48:03 +08:00 via Android
    哄堂大笑了
    TOUJOURSER
        36
    TOUJOURSER  
       2021-08-20 17:59:29 +08:00
    @AoEiuV020 我记得昨天你俩因为这个争论过
    sockpuppet9527
        37
    sockpuppet9527  
       2021-08-20 18:09:14 +08:00
    @darknoll #9
    “c++这玩意确实跟不上时代了” c++每隔几年都有新特性。c++ Coroutines 都有了,不知道你“跟不上时代”的观点从哪里得出呢?

    “唯一的优势是运行效率高,但是现在都是 web 了,速度瓶颈在于带宽”,想想如果用别的语言代替 C/C++去写 kernel,去写驱动,会不会有 NP 问题存在?
    AoEiuV020
        38
    AoEiuV020  
       2021-08-20 18:10:33 +08:00
    @TOUJOURSER 擦,at 我做什么,不想继续这种话题,
    sockpuppet9527
        39
    sockpuppet9527  
       2021-08-20 18:22:46 +08:00
    @mrsecond
    纠正下#23,“音视频开发”大多 SIMD/CUDA 。
    我所知道的写 C++的,有前途一些的:做 DB 的,Storage 的,engine 类的,Heterogeneous computing 的,金融相关的,还有很多
    houzhishi
        40
    houzhishi  
       2021-08-20 18:41:09 +08:00
    mark 了,感谢楼主分享,如何学习更多类似这样的包呢?
    skinny
        41
    skinny  
       2021-08-20 18:56:12 +08:00
    楼主你花太多情绪精力在和杠精、蠢又懒争论上了,没必要,我以前就遇过,他们会不停的立靶子,最后杠回他们自己最初的说法的……
    debuggerx
        42
    debuggerx  
       2021-08-20 19:09:08 +08:00 via Android   ❤️ 6
    理解楼主,太多时候看到新手提问,费劲编辑整理用最简洁清晰的方法和语言回复,结果对方来一句太复杂了,试都懒得试,感觉就像吞了苍蝇一样难受
    angrylid
        43
    angrylid  
       2021-08-20 19:09:30 +08:00 via Android
    可是,确实就是麻烦啊。你说破天,它也是麻烦。
    charlie21
        44
    charlie21  
       2021-08-20 19:31:04 +08:00   ❤️ 1
    cpp 岗位很少,和 java 岗位相比是降低数量级的少

    至于 lz 这个情况嘛,纯属对方动手能力太弱又不承认。承认是不要想承认的了,最多只能承认 cpp 果然不是脚本语言、自己对 cpp 的情况判断不足,虽然但是即使如此 动手能力依然是无可置疑的: 不是我动手能力不行,而是 cpp 没有包管理器,cpp 标准库不行 😋
    swsh007
        45
    swsh007  
       2021-08-20 19:37:05 +08:00 via Android
    delphi 悄悄路过
    其实还有生意的
    yanzhiling2001
        46
    yanzhiling2001  
       2021-08-20 19:42:18 +08:00   ❤️ 1
    v2ex 不再是个友好的社区。撕逼也没有意义,浪费时间。
    levelworm
        47
    levelworm  
       2021-08-20 19:56:11 +08:00 via Android
    写 C/C++最适合的还是做相对底层的东西。
    iyear
        48
    iyear  
       2021-08-20 20:01:50 +08:00 via Android
    说句实话,没有你这个教程,零基础的人想搞个 http 请求,门槛确实高。尤其是刚入门编程的,可能做到一半就麻了
    joshua7v
        49
    joshua7v  
       2021-08-20 20:19:04 +08:00
    cpp 门槛确实相对高,
    你已经熟练了这一套流程当然也不慢,
    但你这一个流程里出任何状况都够新人卡一阵子的了,

    当然我也不觉得用 cpp 发送请求这件事很麻烦,
    麻烦的是要熟悉 cpp 那一套需要的背景知识太多了
    lesismal
        50
    lesismal  
       2021-08-20 21:03:00 +08:00
    中毒的 cpper 千篇一律,清醒的工程师万里挑一。
    lesismal
        51
    lesismal  
       2021-08-20 21:07:24 +08:00
    《一代宗师》里「老猿挂印回首望,关隘不在挂印,而是回头」。
    工程师学习的 cpp 的过程,关隘不在挂印——比如精通 cpp 各种语法予以达到语言律师级别,关隘在回头。
    mrsecond
        52
    mrsecond  
       2021-08-20 21:36:19 +08:00
    @nannanziyu 多谢回复
    LeeReamond
        53
    LeeReamond  
       2021-08-20 22:15:34 +08:00
    如同楼上老哥说的,cpp 语言本身问题事小,cpp 虽然严重不优雅,但 rust 出现后我们理解了 cpp 不烂。

    但是缺乏统一标准,中央集中式的包管理器,以及可靠的编译链条,无论哪一个都是硬伤。
    learningman
        54
    learningman  
       2021-08-20 23:05:08 +08:00
    C++的包管理和构建简直是搞笑吧,make,cmake,pkgconfig,libtool
    我是真弄不清这堆玩意儿
    FACEB00K
        55
    FACEB00K  
       2021-08-21 00:03:56 +08:00
    我的想法💡是,遇上这个问题,首先考虑语言本身的标准库支不支持该功能,然后去寻找主流的第三发库,然后下载,配环境;之后,回到语言本身,肯定是调用库里的某个类,再调用某个类的某个函数,了解要传递的参数,看看文档,看看 demo,搜搜教程;接着就是自己测试了。

    不论是哪门编程语言,都应该是真么思考的吧
    inframe
        56
    inframe  
       2021-08-21 00:19:32 +08:00
    cpp 开发综合项目不适合新手使用;
    python 3 行就行了哈哈
    xy90321
        57
    xy90321  
       2021-08-21 00:22:27 +08:00 via iPhone   ❤️ 2
    其实道理很简单,对于“懂得人”来说确实就是不麻烦
    剩下只是“懂得人”多寡的问题
    这就好比,对于懂得人来说,用快速傅里叶变换做个频谱分析也就是信手拈来的事情
    对我来说可能就是:什么是快速傅里叶变换???
    gyf304
        58
    gyf304  
       2021-08-21 01:58:14 +08:00
    @abersheeran pipenv?
    aofall
        59
    aofall  
       2021-08-21 02:37:23 +08:00 via Android   ❤️ 2
    对于现在啥都讲究“快”的时代来说确实稍微繁琐了一点,标准库中没有内置,然后也没 npm 、maven 类似的包管理,不能 import/install 无脑解决这个需求。

    我相信这个需求对于有点英语水平+善用搜索引擎的人来说不难,可是现在国内的开发越来越偏向于怎么快速简单开发完成性能还算过得去的稳定的系统,因为随着硬件的发展软件性能也不再是瓶颈了,只要可以拿钱堆配置解决的事情就可以不那么注重性能优化,重点在于项目能不能上线赚钱,最优性能很少能给自己带来更大的利益。

    这样子一来国内对于 cpp 开发的社区 /资料随着时间也就越来越少了。另外 CSDN 的权重也比较高,抄来抄去的垃圾内容很容易把真正有用的信息给覆盖了,无形之中也给学习带来了“门槛”。大家还是得心平气和的交流才能有新鲜血液的涌入,中文社区的氛围也才能变得更好一点呀。。。
    pkookp8
        60
    pkookp8  
       2021-08-21 10:03:16 +08:00 via Android
    @xy90321 只要有现成的库,头文件,我懂不懂 fft 也不影响呀,哪个语言不是给入参,拿出参。

    就像我不懂平衡树,也不影响我用 std::map
    我只要知道他效率高,能加能减就够了
    nannanziyu
        61
    nannanziyu  
    OP
       2021-08-21 10:14:18 +08:00
    @lesismal
    > 中毒的 cpper 千篇一律,清醒的工程师万里挑一

    鉴于你连同楼里的信息都获取不了,我把 #11 #15 的内容再复制一遍给你看

    你其实看看我以前的贴子
    我主语言是 java
    我主赚钱语言是 c#,之前做 UWP 年入差不多两百,当时安利大家做 UWP 的帖子在这里 https://v2ex.com/t/317307,里面收入 dashboard 都有,当时是真心安利,应该受益的人也不少;至少我同事里面跟我有好多人赚到了钱
    关于语言:
    我前后端很多语言都熟悉,毕竟做的年份多,加上爱好

    语言是工具,每种工具都有适合自己的地方
    Rust 也没有原生 http 库,C 也没有
    语言各有优略,你说的这几门语言除了 golang,我都写过十几年,java 还是我的主吃饭语言
    java 裹脚布
    python 纸质书翻页需要游标卡尺
    go 泛型都没有,1M 的源代码有 500k 的 if err != nil
    javascript 弱类型大型项目管理困难,ts 救了无数人的命
    如果只说语言优劣,那除了 ts 和 c# 别的都没有意义了?
    还是那句话,语言是工具,每种工具都有适合自己的地方

    不是我帮 c++说句话,我就是喜欢 c++,连党卫军都来了
    我只是说现在 2021 年了,用 c++发个 http 请求并不麻烦,我也给出证据了
    我根本不喜欢 c++,我自己喜欢的是 ts 和 c#

    PS:
    1. 刚入门的人才会用语言冠人,goer, javaer, phper, cpper 等等,再过两年,你就知道语言只是工具了。
    就像你不能因为今天吃了个汉堡,就叫自己 hamburger 一样。
    2. 这楼里,你和 @darknoll 两个刚入门的人,蹲在井底一块落砖上,却以为站在高台上指点别人,贻笑大方。走出井看看,你会发现世界不一样
    Juszoe
        62
    Juszoe  
       2021-08-21 10:18:57 +08:00
    最近折腾 c++的 opencv 和 x265,对我这个 python 程序员来说太煎熬了
    zxCoder
        63
    zxCoder  
       2021-08-21 10:44:14 +08:00
    所以结论是 c++门槛低吗。。。
    Cbdy
        64
    Cbdy  
       2021-08-21 11:11:36 +08:00 via Android
    不懂 C++,看着感觉挺麻烦的😳,这可能是楼主能找到的最简单的方法了吧?也许这就是 C++的门槛吧

    Windows 要装一个几个 G 的 VS,macOS 看着更麻烦
    lesismal
        65
    lesismal  
       2021-08-21 11:16:36 +08:00   ❤️ 2
    > 我主语言是 java

    我之前看到你说主语言是 java 了。
    我讲的跟主语言没关系,而是对待 cpp 的态度。太多人沉迷于维护 cpp 的名声而不自知了。

    > 2. 这楼里,你和 @darknoll 两个刚入门的人,蹲在井底一块落砖上,却以为站在高台上指点别人,贻笑大方。走出井看看,你会发现世界不一样

    我也快 40 了,十几年前最早就是开始写 c/c++ 写了好多年,现在已经不靠代码为生。至于水平,这里有我两个 go 的 repo:
    https://www.v2ex.com/t/794435#reply1

    做的晚,宣传力度小,star 少,但你可以对比下同类 repo,再来评价我是不是刚入门:
    https://github.com/cloudwego/kitex-benchmark
    https://github.com/lesismal/go-net-benchmark

    《一代宗师》里「老猿挂印回首望,关隘不在挂印,而是回头」。
    对于 cpp,回头的含义可以理解为:能够正视 cpp 的问题,而不是用 “如何解决 cpp 的某个问题” 来解释 “所以 cpp 没这个问题”。你用 1 分钟发 http 请求,就相当于是在用 “如何搞定发 http” 来跟别人 battle “cpp 门槛高” 的问题。

    之前帖子里我没有回复也是因为懒得去 battle cpp 相关的,以前在各种老论坛、技术群跟人 battle 得太多了,对于 cpp 最清醒的大概两类人,一类是顶尖一批接近语言律师级别的大神、既能精通各种语法予以模式又能在实际业务中合理运用,一类是独孤九剑式的清醒工程师、知道什么不利于工程所以弱水三千只取 cpp 最合适的那一瓢或者几瓢来做项目。剩下的要么被 cpp 折磨要么转其他了。
    lesismal
        66
    lesismal  
       2021-08-21 11:25:14 +08:00
    楼主还忽略了一点,跟你争论的人里是有不少熟手的,这些都是可以自己解决原贴的 cpp 问题的人,然而这些人同样认为 cpp 门槛高。各位 battle 的点,是门槛高,而不是如何解决发送 http 请求这个问题本身了。

    我前面说学 cpp 关隘在于 “回头”,技术交流又何尝不是,在并非技术细节本身而是对技术认可相关评价的问题上,更广大用户的态度是不认可,而自己却一味坚持去解释它并不这样。

    每次的自我否定通常也会给自己带来知识和心境的提升,早回头,少浪费点时间吧。
    MakHoCheung
        67
    MakHoCheung  
       2021-08-21 11:29:00 +08:00
    @nannanziyu 所以你做的是什么 uwp,我去搜搜看看
    Cbdy
        68
    Cbdy  
       2021-08-21 11:30:55 +08:00 via Android
    @lesismal 可能还有一种工程师的选择,就是不碰 C++
    Linux Kernel 、Git 、Redis 、Postgres 、Nginx 这种世界级的项目为什么选择 C ? Linus 为什么痛骂 C++?我不禁陷入了沉思😔

    我感觉上,C++就是碰瓷营销 C 语言,就像 JavaScript 碰瓷营销 Java 一样,把很多人都迷惑了
    nannanziyu
        69
    nannanziyu  
    OP
       2021-08-21 11:52:16 +08:00
    @lesismal
    > 我讲的跟主语言没关系,而是对待 cpp 的态度。太多人沉迷于维护 cpp 的名声而不自知了。

    同楼里我说了很多次,我不喜欢“C++,只说语言,我最喜欢的是 ts 和 C#”
    我并没有“维护 cpp”,我想说的就是一句 “2021 年了,c++ 发一个简单的 http 请求不麻烦了”
    你要打靶应该对这这句话来打
    而不是进入自己逻辑怪圈,树一个我“维护 cpp”的靶子,然后自己来打

    > 至于水平,这里有我两个 go 的 repo
    github 怪相,某些语言写多好的库,也就几百 star ;
    有些语言,随便写个玩具就上千 star,比如 go 和 前端语言 以及 mac 相关项目
    我用小号随便写个 swift 的玩具 https://github.com/gragrance/CaptuocrToy,都 1.3k star
    所以没错,star 并不能反映水平
    因为我怕被熟人认出来嘲笑自己这么大,还和人在网上对线,我这个账号没有公布过主 github 账号,我只能说我主账号也有 go 项目,star 数也不比你的少
    你的项目确实不错,所以我觉得更不应该用语言冠人吧

    > 对于 cpp,回头的含义可以理解为:能够正视 cpp 的问题,而不是用 “如何解决 cpp 的某个问题” 来解释 “所以 cpp 没这个问题”。你用 1 分钟发 http 请求,就相当于是在用 “如何搞定发 http” 来跟别人 battle “cpp 门槛高” 的问题。

    感觉你还是没有看完帖子
    我提供了“在不知道解决方法的时候,如何通过搜索引擎和网络,寻找解决问题的”方法
    包括如何搜索关键字,如果寻找答案
    但是对方说“需要搜索的都不算,必须直接复制粘贴才算答案“,所以才给出了这个主楼的答案
    lysS
        70
    lysS  
       2021-08-21 11:54:09 +08:00
    再来个 HTTPS 的🐶
    cs419
        71
    cs419  
       2021-08-21 12:01:23 +08:00
    1. 楼主是仅仅想表达 c++发起 http 简单 ?
    还是想说 C++门槛不高 ?

    2. 如果是想说 C++门槛不高
    能否说点 对新手友好的教程

    对 门槛高 的理解
    初期容易劝退新手 就认为是门槛高
    比如 新手看 Java 编程思想 就容易劝退 (缺少交互感)
    这类大头书 更适合查漏补缺 已经上手的人 去打磨细节

    用 python java 这类语言 能很轻松的实现一些功能
    (有交互感,比如爬虫咋写,能较主动的思考咋写)
    从这个角度 c++ 门槛高
    (交互感差,比如 字符串的操作,逼着自己去学咋写)
    当然 从底层的角度看 c++ 应该是 比 汇编友好的

    所以问下楼主
    c++ 有对标 python java 这类语言
    REPL 的交互感 强点的教程(书籍、视频、系列博文等)吗


    另外挺多教程都是教语法,不教相关工具的
    如果说教 java 却不教 maven 这样的话 那显然是不友好的

    ps: 在某些人眼中,没学过数据结构、操作系统原理之类的,不配自称程序员。
    nannanziyu
        72
    nannanziyu  
    OP
       2021-08-21 12:09:18 +08:00
    @cs419
    > 楼主是仅仅想表达 c++发起 http 简单 ?还是想说 C++门槛不高 ?
    我想说的就是一句 “2021 年了,c++ 发一个简单的 http 请求不麻烦了”

    > c++ REPL 强点的教程(书籍、视频、系列博文等)吗
    书籍我不知道
    c++ 可用的 REPL 的库可以尝试下 http://chaiscript.com
    但各个语言都各自的用武之地,不用太挣扎
    gBurnX
        73
    gBurnX  
       2021-08-21 12:10:35 +08:00
    @zakokun

    [web::http::client::http_client clien 这么长一串] ,是因为有些复杂的项目,不同的包路径里会存在同名的类,因此不 import 而是直接写出这么一长串的绝对路径,是为了处理这个问题。
    lesismal
        74
    lesismal  
       2021-08-21 12:11:25 +08:00
    @Cbdy 基础设施的领域,因为开发者自身水平比较高,通常 c 也能搞定。基础设施用 c++的,牛逼的团队会限制姿势使用 c++比如只用 c with class and stl 。内存敏感的领域甚至连 stl 都是要禁的。

    非基础设施的领域,因为涉及到很多更偏商业业务的,开发人员水平也有很多初级中级,所以单就 stl 讲就比纯 c 好用的多。尤其是还有很多年代背景,那个年代还是 tr1 、boost 早期阶段,没有 c++11 到 21 这些更加闹心的语言标准和姿势,那时候有很多 c++的老项目。现在仍然有很多性能敏感的偏商业业务是 c++的天下,因为 rust 还太年轻,需要一些年头去过度才能大面积取代 c++。

    > 可能还有一种工程师的选择,就是不碰 C++
    牛逼点的工程师,还是需要一些 c++的积累的。可以选择不用,但至少自己能够知道为什么不用、并且用其他的什么能在性能、开发效率、商业之间收获更好的平衡收益。

    > C++就是碰瓷营销 C 语言,就像 JavaScript 碰瓷营销 Java 一样,把很多人都迷惑了
    也不算碰瓷,c++诞生的年代,确实需要比 c 更方便一些的功能来让业务开发效率得到提升,c 是对于高手相对友好,但是复杂业务仍然门槛高,比如内核你去读源码,一个逻辑十几层的宏看着看着就忘记了从哪里过来的、非常耗费时间。cpp 相比于 java 的一大劣势是作者本身,bj 老爷子本身是偏学术型的学者而非偏商业的大佬,并且那个年代,前面的编程语言可借鉴的主要是 c,而 java 是 sun 公司搞出来的,性能其次考虑,很多特性尤其是 gc 和成熟的社区方案供给,对开发者太友好了、可以极大促进商业成功。
    c++也并非失败,只是相比于稍晚辈的 java 的成功显得差一些。去年看到一篇 bj 老爷子的专访,还是比较客观的:
    https://new.qq.com/omn/20201117/20201117A0988S00.html

    我看好 rust 逐渐在更多领域替代 cpp
    lesismal
        75
    lesismal  
       2021-08-21 12:20:04 +08:00
    @nannanziyu
    > 我想说的就是一句 “2021 年了,c++ 发一个简单的 http 请求不麻烦了

    兄台,你仔细想想,不管是不是包括搜索的步骤,你想去极力说明的观点,对于跟你辩论的同学来说,就是在说明 cpp 门槛不高。所以上一个帖子我也看了但是没在里面回复。

    其实最简单的一点,你来一句“cpp 门槛确实高,但之前的楼主主要是研究方法不当、比如连搜索都不太会”,就能避免大家的分歧。

    年纪越大了,就越知道很多事情都是在浪费时间,所以,这个问题我要“回头”了,再回帖只交流技术好了。
    nannanziyu
        76
    nannanziyu  
    OP
       2021-08-21 12:20:58 +08:00
    > 楼主还忽略了一点,跟你争论的人里是有不少熟手的,这些都是可以自己解决原贴的 cpp 问题的人,然而这些人同样认为 cpp 门槛高。各位 battle 的点,是门槛高,而不是如何解决发送 http 请求这个问题本身了。

    1. 如果认真讨论当然没有问题了
    但是如 #1 这样的,我引用下

    > 我全程看完,只是觉得承认 CPP 门槛相对更高又不是什么丢人的事情,你这么纠结干啥?那帖子都是默认楼主零基础> 吧。我假设自己是新人,从你发的这些来看,vs 这东西好几 G,安装要激活码的,我从哪里弄?我是 MacOS 系统 vs > for Mac 和你发的界面不一样的,相对于脚本语言就是有门槛啊。 顺便说,看到 web::http::client::http_client clien 这> 么长一串我就笑出来了

    连 namespace 概念都没有,四句话三句错的还有 17+赞,就难免让人无语了

    2. rust 也没有 std http 库
    lesismal
        77
    lesismal  
       2021-08-21 12:23:00 +08:00
    另外,我并不是想用自己两个库 star 数量来说明自己水平还可以,因为相比于同类项目动辄头部大厂团队多年积累、或者 5k+ star,而我那两个性能综合指标、易用性、扩展性都更强,star 数少得可以忽略。。。
    nannanziyu
        78
    nannanziyu  
    OP
       2021-08-21 12:27:17 +08:00
    @lesismal
    > 你来一句“cpp 门槛确实高,但之前的楼主主要是研究方法不当、比如连搜索都不太会”,就能避免大家的分歧。

    哎,可能我们的分歧就在这里
    我认为”搜索和提问“不能算作一门语言的门槛,现在搜索几乎是生活必须技能,现在电器都没有说明书了,某些功能不会,都是二维码或者搜索引擎
    我觉得我在提供的两种方法中已经排除了任何算作门槛的东西

    至于门槛,我从头到尾都没有争执过,我一直说:c++可以干脆连 C with object 都不用,当面向过程的 C 写,0 门槛;也可以写自己一个月后都需要看半天才能理解的复杂模板。
    lesismal
        79
    lesismal  
       2021-08-21 12:41:55 +08:00
    @nannanziyu 对,很多不必要的争论都源自误解的分歧,所以没必要。回头望跟跳出圈外看事情是一个道理,往往旁观者清。
    GeruzoniAnsasu
        80
    GeruzoniAnsasu  
       2021-08-21 13:04:58 +08:00   ❤️ 1
    看完我都笑了
    c++现在都成原罪了

    原题说 c++发 http 请求好难写,答主说有简单办法:用现成的包管理和某个库,几行就能搞定
    我点进来的反应,wow 现在 nuget 真 nb amazing


    其它人的反应:
    - 装 vs 本身门槛就很高了
    - c++落后时代没前途
    - 语法真复杂好麻烦
    - c++生态硬伤
    - ……


    「……你们前端怎么把时间戳转字符串?」
    「啊……建议你用 moment 」
    「……啥?我搜搜……哦……这样写……报错了?」
    「哦对,可能我写的那个组件引用了个旧版本,等我更新一下」
    「好了,你再拉一下」← git pull && rm && npm install,10 分钟
    「……真 j8 麻烦」
    「这是 js 生态的特性,不得不品尝」

    我经历的真实对话(语句未 100%还原)

    也是我经历的真实对话(语句也未 100%还原)

    「你们 c++ 怎么发一个 http 请求」
    「有个库,nuget 就能下,有 demo 」
    「你们怎么还在用 c++哦」
    darknoll
        81
    darknoll  
       2021-08-21 16:31:16 +08:00
    @nannanziyu 你有完没完了?怎么又扯上我?
    xingheng
        82
    xingheng  
       2021-08-21 17:02:09 +08:00
    楼主分享精神可嘉,但是内容排版我真没看上,建议下次用 markdown,或者直接贴 gist,so 链接。
    我一向认为对于新人或者同级别的人而言这样的帖子都是有益的,贵在分享,写清楚故事背景和受众明确就是合理的。
    evilStart
        83
    evilStart  
       2021-08-21 19:02:32 +08:00 via Android
    @nannanziyu 现在做 uwp 还有戏么?
    wangxn
        84
    wangxn  
       2021-08-21 22:21:13 +08:00
    @Cbdy 我也能列一系列选择了 C++ 的世界级项目:
    Android framework 、Windows kernel 、GCC 、LLVM 、MySQL 、Chromium 、Firefox 、Unreal 、Unity 、……
    所以为什么它们不用 C ?
    C++ 本来就是要解决 C 解决不了的问题,作者喜爱 C,所以是 C plus plus,而不是想做什么营销。无论承不承认,C++ 在大型工程项目上有它巨大的优势,比如游戏行业就几乎没有 C 的项目,C++ 始终是中流砥柱。
    Cbdy
        85
    Cbdy  
       2021-08-22 06:47:12 +08:00 via Android
    @GeruzoniAnsasu JavaScript 生态确实有待提高啊,包质量相对差一点,动辄几百兆的 node_modules,而且你说的的这个 moment 已经被作者弃坑了,吐槽一下有什么问题吗?
    Cbdy
        86
    Cbdy  
       2021-08-22 06:49:52 +08:00 via Android
    @wangxn 我只是说明一种对待 C++存在问题的思路,并不是说 C++写不出世界级项目,C++比 C 抽象能力更好、功能更多,怎么会写不出世界级的项目呢?
    但要考虑到他存在的问题,不去用它也是一种选择
    GeruzoniAnsasu
        87
    GeruzoniAnsasu  
       2021-08-22 08:29:55 +08:00
    @Cbdy 你可能没有弄明白↑经历中我是哪个角色,换个思路再想一下
    leimao
        88
    leimao  
       2021-08-22 10:02:34 +08:00 via iPhone
    VS 并不是个用户友好的社区,看看帖子就行,不用回。
    secondwtq
        89
    secondwtq  
       2021-08-22 20:39:56 +08:00
    这标题起得太俗了,建议改成“三句 C++ 让 Windows 给我发送 HTTP 请求”
    fzcf
        90
    fzcf  
       2021-08-22 20:40:11 +08:00
    专业的技术贴还是支持楼主的。
    chtcrack
        91
    chtcrack  
       2021-12-25 17:02:46 +08:00
    @darknoll c++这玩意确实跟不上时代了,看了这句就笑死了..应该是开发 web 的程序员顶层就那么点,干得再好的 web 程序员,年薪不会超过百万的,自己去看看理想汽车招聘 c++程序员,年薪百万起,说好听点 web 程序员门槛太低,说难听点就是傻子都能当 web 程序员..c++不是一般人能学得好的,怎么办呢?还是去搞 web 吧,简单..
    chtcrack
        92
    chtcrack  
       2021-12-25 17:15:47 +08:00
    @darknoll 还有你可能不知道 node.js 是使用 C++语言开发、编写的; Node.js 底层是 C++( V8 也是 C++写的),C#是微软公司发布的一种由 C 和 C++衍生出来的面向对象的编程语言.PHP 是在 1994 年由 Rasmus Lerdorf 创建的 ,最初只是一个简单的用 Perl 语言编写的统计他自己网站访问者数量的程序。 后来重新用 C 语言编写.java 是由 c 语言发展而来的,并且内核是由 c 编写的,是高级语言。JAVA 虚拟机( JVM )是用 C 语言和汇编语言编写的
    然后你用着 c/c++大神编写出来的高级语言说 c++过时,噗哈哈哈.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   425 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 18:37 · PVG 02:37 · LAX 10:37 · JFK 13:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.