草庐IT

c++ - 如何标记@ref 引用的结尾?

我正在使用Doxygen来记录C++代码,并且正在为代码编写大量的Doxygen文档。在一个地方,我在代码中制作了一个组列表,并希望它显示如下:ControlModule:themodulethatcontrolseverythingSlaveModule:themodulethatistheslaveoftheControlModule我的文档源是这样的:-@refCM:themodulethatcontrolseverything-@refSM:themodulethatistheslaveofthe@CM但是,问题:Doxygen似乎将引用名称读取为CM:,而不是CM,因此无法找

c++ - cplusplus.com 说 std::string "shall not be dereferenced"的结尾

如果你能为我澄清一些困惑,我会很高兴。我正在编写一个函数来删除字符串中的重复字符,例如"AB-->"AAABB"。voidremove_dups(std::string&str){std::string::iteratorit=str.begin();while(it!=str.end()){if(*(it+1)==*it){str.erase(it+1);}else{++it;}}}我测试的时候好像能用。但是,我想知道,不应该有栅栏柱问题吗?当“it”是字符串的末尾时,if语句查看不存在的下一个字符。根据cplusplus.com,尾后字符是一个理论字符,将跟在字符串中的最后一个字符

c++ - 如何检查ifstream是否在C++中的文件结尾

我需要按顺序读取一个大文件(大约10GB)的所有block,该文件包含许多带有几个字符串的float,如下所示(每个项目由'\n'分隔):6.292611-1.078219E-266-2.305673E+065sod;eiwo4.899747e-2371.673940e+089-4.515213我读了MAX_NUM_PER_FILE每次处理项目并处理它们并写入另一个文件,但我不知道什么时候ifstream结束了。这是我的代码:ifstreamfile_input(path_input);//myfileisatextfile,butitriedbothtextandbinarymode

c++ - 为什么 char 数组必须以空字符结尾?

为什么chararray必须以空字符结尾?有什么理由我必须将空字符添加到每个char数组吗?他们似乎得到了同样的待遇。 最佳答案 char数组不必以null结尾(不依赖于此的标准库函数包括memcpy、memmove、strncpy--错误地命名了这个最新的--,printf具有正确的格式字符串)。根据定义,NUL终止字符串(NTCS)需要以NUL终止。它是C标准库的字符串处理实用程序所期望的格式,也是大多数C程序使用的约定(在C++中,通常使用std::string) 关于c++-为什

c++ - 标准文本文件是否以 NULL 结尾?

我正在编写一个C++程序,它读取一个文件,然后将它作为字符数组发送到另一个类。因为字符数组只通过指针传递,所以所有大小都丢失了。它将读取的文件将是一个文本文件。文本文件是否终止?我最好不想使用Vector,因为我真的不需要它的任何功能,只需要数组的大小。 最佳答案 没有。文件的长度已知,因此不需要任何终止字节。 关于c++-标准文本文件是否以NULL结尾?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

c++ - 使用字符串文字初始化时,std::strings 是否以 '\0' 结尾?

我知道字符串对象不是以null结尾的,但为什么要这么做?std::stringS("Hey");for(inti=0;S[i]!='\0';++i)std::cout所以构造函数也复制空终止符,但不增加长度?为什么会麻烦? 最佳答案 Sotheconstructorcopiesthenullterminatoraswell,butdoesnotincrementthelength?如您所知,std::string不包含空字符(并且它不会在此处复制空字符)。重点是您正在使用std::basic_string::operator[]。根

c++ - 一个 C++ 类函数应该以 } 结尾吗?或者只有一个}?

关于C++语法的基本问题。C++函数应该以;结尾吗?还是没关系?或者这两个例子有什么区别?有结局;voidTest::print(){...};没有;voidTest::print(){...}我见过有和没有的C++代码,但我不明白其中的区别。/谢谢更新:在这种情况下;应该避免,因为它没有做任何有用的事情,甚至可能在将来成为一个问题。 最佳答案 在类主体之外(其中函数定义可以选择性地后跟单个;),函数定义由复合语句结束-这是结束}。在命名空间范围内,函数定义的右大括号之后的下一个标记必须构成下一个声明的一部分。在C++03中,没有e

c++ - std::string::reserve 和字符串结尾 0

当使用std::string::reserve进行预分配时,我是否必须明确地为终止0添加one以便避免重新分配和后续复制?例如,知道长度为5的字符串"Hello"将存储在std::stringstr中,我是否必须调用str.string?保留(6)?如果我正确阅读了标准,那么我认为答案应该是是。对于reserve它说Afterreserve(),capacity()isgreaterorequaltotheargumentofreserve.对于capacity依次声明Returns:Thesizeoftheallocatedstorageinthestring.不过,我不太熟悉标准中

c++ - 从 getline() 返回的字符串是否以 null 结尾?

在谷歌搜索了一段时间后我不太确定的一件事是getline()的返回字符串。希望在这里得到证实。std::getline这个全局版本返回一个std::string所以它不一定是空终止的。一些编译器可能会附加“\0”,而其他编译器则不会。std::istream::getline此函数返回一个c风格的字符串,因此可以保证该字符串以null结尾。是这样吗? 最佳答案 空终止是一个仅适用于C字符串的概念;它不适用于std::string的对象-他们让您通过调用size()找到尺码,并且不需要空终止。但是,从std::string返回的字符串

c++ - 列表初始化的 char 数组是否仍然以 null 结尾?

当我阅读LippmanC++Primer(第5版,C++11)时,我遇到了这段代码:charca[]={'C','+','+'};//notnullterminatedcout在ca上调用库strlen函数,它不是以null终止的,会导致未定义的行为。Lippman等人说,“这个调用最可能的效果是strlen将继续查找跟在ca之后的内存,直到它遇到一个空字符。”稍后的练习将询问以下代码的作用:constcharca[]={'h','e','l','l','o'};constchar*cp=ca;while(*cp){cout我的分析:ca是一个非空终止的字符数组。cp是一个指向char