草庐IT

C++标准

全部标签

c++ - 为什么 C++ 标准没有像 C# 添加 "properties"?

我所说的属性是指C#风格的属性,带有getter和setter。我很想知道为什么它们不是C++语言的一部分。我假设在编写规范时一定已经讨论过这样的特性,因此不将它包含在语言中是一个明智的决定。 最佳答案 这是一种实现方式:http://www.codeguru.com/cpp/cpp/cpp_mfc/article.php/c4031/Implementing-a-Property-in-C.htminti=5,j;PropTesttest;test.Count=i;//--callthesetmethod--j=test.Coun

c++ - 什么是执行宽字符集及其编码?

标准中提到了很多与字符集相关的概念:基本源字符集、基本执行字符集、基本执行宽字符集、执行字符集、执行宽字符集:基本源字符集:91个图形字符,加上空格字符、HT、VT、FF、LF(只是借用了ASCII的名称缩写)。基本执行(宽)字符集:基本源字符集的所有成员,加上BEL、BS、CR、(宽)NUL。执行字符集和执行宽字符集分别是基本执行字符集和基本执行宽字符集的实现定义超集。执行字符集成员的值和附加成员集是特定于语言环境的。我对基本源字符集、基本执行字符集和基本执行宽字符集没有太多疑问。至于执行字符集,标准说它是实现定义的和特定于语言环境的,所以我试图通过观察字符串文字初始化的char数组

c++ - 缺少用户定义的构造函数是否违反了非默认可构造结构的标准?

可以定义一个struct(a)没有用户定义的构造函数,(b)不能为其生成默认构造函数。例如,下面的Foo:structBaz{Baz(int){}};structFoo{intbar;Bazbaz;};您仍然可以使用聚合初始化创建Foo的实例:Foofoo={0,Baz(0)};我的普通编译器(VS2012)会勉强接受这个,但它会引发2个警告:warningC4510:'Foo':defaultconstructorcouldnotbegenerated.warningC4610:struct'Foo'canneverbeinstantiated-userdefinedconstruc

c++ - 有了一些 map 和一些根,我们想遵循什么标准算法有助于创建路径?

我们有一些点集(每个点都有它的X和Y)和多个根图[point,point]。我们可以通过根从任何点移动到任何可能的方向。我们得到了一些我们想要尽可能接近的2d点路径:如何计算这样的路径:这看起来与给定路径尽可能相似?什么是可以做这样的事情的有用算法(并且在BoostGeometry或Graph或任何其他常见的开源C++库中实现)? 最佳答案 这是一个非常可爱的小问题。如果你的图表连接良好,贪婪的方法可能会很有效。如:(1)将当前位置设置为最接近路径起点的节点,(2)移动到最接近路径中下一个点的相邻节点,直到没有更近的点,(3)选择路

c++ - 如果从文件流读取数据,为什么 gSOAP 将标准输入模式设置为二进制?

我一直在玩gSOAPXML数据绑定(bind),方法是将XML文档加载到C++类中,修改数据并将其序列化回XML。这是XML的片段-library.xml:201...以下代码将XML加载到对象中,修改对象并将其序列化回XML。请注意,XML是通过文件流从文件中加载的,要添加的数据是通过标准输入(cin)从用户处获取的。主要.cpp:#include"soapH.h"#include"gt.nsmap"#include#include#include#includeusingstd::cin;usingstd::cout;usingstd::endl;usingstd::ifstrea

c++ - 使用 ios::binary 从标准中读取

我正在尝试从标准输入中读取并通过其十进制值将每个字符彼此区分开来。据我了解,换行符(10)和回车符(13)将被解释为相同的字符。我想区分两者。我知道如果我正在读取一个文件,我可以使用ios::binary参数打开它。但是,如果我从标准输入读取数据呢? 最佳答案 您可以使用get从std::cin中读取。该方法专门用于读取无格式数据(seedoc) 关于c++-使用ios::binary从标准中读取,我们在StackOverflow上找到一个类似的问题: htt

c++ - 显示字符名称 C++ 的标准解决方案?

对于非字母输入字符的用户友好表示是否有标准函数?假设char(27)将是“ESC”或“Escape”或类似的东西。我问这个是因为这对我来说是一种在命令行中显示控件帮助的简单方法。编辑:正如@ypnos所指出的:问题是如何避免定义我自己的键名。我想知道boost或std中是否有我错过的功能或一些基本库?目前,Ascii-only可以为我工作,但我正在寻找一个“标准”解决方案,因为我不想在处理Unicode输入后重新实现——比如带有重音符号的字符不在Ascii中——稍后。我的程序代码将被发送到Linux和Windows,我也不希望名称在某些地方出现错误。 最佳答

c++ - 下标运算符的标准 C++ 函数对象模板

假设我目前有一个这样的模板函数:templatevoid*get_subobject(Kkey){T&obj=function_returning_T_ref();//dovariousotherthings...return&obj[key];}我想使下标操作可配置,以便用户可以应用他们自己的代码来映​​射obj和key到返回值。像这样:template>void*get_subobject(Kkey){T&obj=function_returning_T_ref();//dovariousotherthings...return&Op{}(obj,key);}我的问题是,对于默认模

c++ - 指针运算和积分提升

在表达式p+a中,其中p是一个指针类型,a是一个整数,整数提升规则是否适用?例如,如果a是一个char,在64位机器上它肯定会在添加到指针值之前扩展到64位(在编译的程序集中),但它是由标准指定的吗?会提升到什么地步?int、intptr_t还是ptrdiff_t?unsignedchar或size_t会被转换成什么? 最佳答案 因为char是一个整数类型,标准似乎不需要任何提升:对于加法,两个操作数都应具有算术或无作用域枚举类型,或一个操作数应是指向完全定义的对象类型的指针,而另一个应具有整数或无范围枚举类型似乎实现可能取决于底层

c++ - 为什么在增强或标准中没有 "variant"?

any优于variant的一个优点是,不需要指定它可能包含的所有类型。我注意到,随着variant可能包含的类型数量的增加,人们倾向于在某个时候切换到any,因为他们根本不跟踪所有类型了。我认为any和variant之间的混合是可能的。可以将any的“placeholder”(通过放置new)存储在aligned_storage中,大小计算为constexpr函数或模板元函数,来自最大类型的样本,最终可能会被存储。另一方面,用户不需要指定any可能包含的所有类型。如果用户尝试在其中存储大于aligned_storage的内容,则any也可能随时抛出。这样的“variant_any”类是