- 主题:回去写了几天C++,越写越恶心
C++ 入门书都会讲为什么要用 cin、cout 的原因吧?
至于类型安全,只要有指针,基本上都有这个问题。
对于大多数用户来说,C++ 的问题只不过是底层库不够全。
【 在 KEILLY (米饭) 的大作中提到: 】
: 像cin、cout这样的,后面用 》《
: 原来的printf不好吗?
: 直接劝退初学者。
: ...................
--
FROM 27.115.42.*
没学过rust的语法,不知道可读性差在哪里
但是相比scanf/printf来说,cin/cout还是方便很多
使用它们时几乎不用记忆格式控制符
更何况后者很容易通过重载实现各种自定义数据类型的输入、输出
【 在 KEILLY (米饭) 的大作中提到: 】
: cin、cout可读性太差了。
: 有了它,rust里生命周期这么丑的语法,都可以忍受了。
--
FROM 27.115.42.*
简单的用法,cout比printf有明显地优势
即使要设置精度,cout也不并比printf麻烦,最多就是不符合C码农的口味
何况C++20也有C风格的std::format可用,估计rust的fmt也不过如此。
【 在 toutouqi (toutouqi) 的大作中提到: 】
: cout简单查看没问题,但设置个浮点数精度就很麻烦,而且很多时候不如printf方便和直观。
--
FROM 103.40.221.*
可惜我只懂一点lisp,没法体会它们的差异
- 来自 水木社区APP v3.5.3
【 在 No1 的大作中提到: 】
: rust的format逊于common lisp的,但也算复杂了
--
FROM 103.40.221.*
对于基本数据类型,C++的流操作符都是直接连接,
根本用不着占位符,不知道烦在哪里
就算对于自定义类型,也可以重载流操作符,还是可以直接连接。
【 在 KEILLY (米饭) 的大作中提到: 】
: rust里(对于基础类型)只需要用占位符{ }就够了,例如
: print!(“{}, {}!”, “Hello”, “ World”);
: 都只需要看第一个参数,就知道示例代码大致的意思。。
: ...................
--
FROM 103.40.221.*
私以为实业界程序的输出主要集中在图形界面与日志等文件流,
终端输出的格式控制并不重要呢!
另外,你这种简单输出用占位符也未必方便,可读性也未必比
cout << “Hello world”
强!
- 来自 水木社区APP v3.5.3
【 在 KEILLY 的大作中提到: 】
: 你习惯了,不觉得机器味重。
: c++需要将《之间的几个参数都组合在一起才读明白什么意思,若参数多、《
: 之间没有空格、没有编辑器的颜色提示,可读性极差。
:
: 其他大部分的语言,都只需要看第一个参数。
: 相当于先给你一个提示,再根据占位符找答案。是比较人性化的沟通方式。毕竟代码是给人读的。
--
FROM 27.115.42.*
【 在 No1 () No1 () 的大作中提到: 】
: 占位符这种还是有些需求场景吧,比如类似
: println!("sqrt({x}*{x}+{y}*{y})={z}",x=3,y=4,z=5);
: 这种,直接连接就太不直观了。
数学等式非要在终端输出,效果都好不了吧!
std::cout << "sqrt(" << x
<< "**2+";
(竟然有关键字)若换成 C++20,那就是
std::cout << std::format("sqrt({}**2+{}**2)={}",x,y,z);
可惜,GCC 11 还没有实现,VS2019倒是能用了。
: 再比如无论数字是几,要输出占位20字符如:
: ------- 3.14 -------
: -------- 5 ---------
: 用占位符也很方便:
: println!("{:-^20}", " 3.14 ");
: println!("{:-^20}", " 5 ");
这个用C++98的cout也不难,针对你的特殊情况,有可能更简单。
--
修改:easior FROM 103.40.221.*
FROM 103.40.221.*