草庐IT

c++ - 使用 std::cout 一次而不是多次显示相同数量的数据是否更有效?

例如,像这样显示这些变量会不会更节省内存:std::cout而不是这个:std::cout当然,我并不是真的担心两行代码..但我正在努力学习更有效地编写代码谢谢 最佳答案 将其设为单个语句理论上会更快,因为编译器可以更自由地重新安排参数评估的顺序。但是,这是在谈论0.00000000000001%的差异,毫无意义。不要关心这个-瓶颈在控制台本身。无论如何,列对齐对于可读性非常有帮助,所以试试这个:std::cout或者这个:std::cout(我更喜欢第一个,因为我发现在我的文本编辑器中格式化更容易)。

c++ - 有效的 header 名称

我无法正确理解它们在以下文章中的含义:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1566.htmItisinterestingtonotethatC89explicitlyallowedonlylettersinheaderandincludefilenames.C++addedunderscores,andC99addeddigits.Probablybothstandardsshouldallowboth.我在所有C和C++标准中发现了以下语句:ISO/IEC9899:19906.1.7HeadernamesS

c++ - 对齐静态字符串文字

我有一个静态结构数组:structCommandStruct{char*data;unsignedans_size;};staticconstCommandStructcommands[]={{"Someliteral",28},{"Someotherliteral",29},{"Yetanotherliteral",8},};而且我希望字符串是16字节对齐的。是否可以直接实现?我可能会单独定义每个文字,例如__declspec(align(16))staticconstcharsome_command_id[]="myliteral",但这是一团糟。我需要在单个代码块中进行所有初始化

c++ - 未初始化的值由堆分配 : Unordered_map 创建

解决方案:我可以有很大的字符串,然后我必须为它们保留内存。我在哈希表中使用char指针而不是使用字符串,因此我为我的哈希表键保留了适当的内存。问题:如果问题已经提出,我很抱歉,但我找不到任何对我有帮助的答案。我有以下代码:编辑(Valgrind问题函数的主循环)i=0;wordPos=0;for(;it!=end;++it,i++){//Iwanttoignorethiselementonpurposeif(i==1)continue;boolisscript;stringtag(it->tagName());convertToLower(tag);if(it->isTag()==1)

C++ 构造函数和隐式字符串转换

在C++中,我可以编写一个带有构造函数的类,该构造函数采用std::string参数。由于隐式转换,这将允许我从std::string或char*构造此类的实例。是否有理由同时拥有std::string构造函数和char*构造函数?classMyStringClass{public:MyStringClass(conststd::string&str);//char*'scouldimplicitlyusethisconstructorMyStringClass(constchar*str);//wouldthiseverbenecessary?};这个问题也适用于函数参数。voidd

c++ - 如何使用 uint8_t 而不是 char?

我想了解有关uint8_t与char、可移植性、位操作、最佳实践、事态等方面的情况。您知道关于该主题的好读物吗?我想做字节IO。但当然char的定义比uint8_t更复杂、更微妙;我认为这是引入stdintheader的原因之一。但是,我在多次使用uint8_t时遇到了问题。几个月前,有一次,因为没有为uint8_t定义iostreams。难道没有一个C++库在做真正定义明确的字节IO,即读写uint8_t吗?如果没有,我认为没有需求。为什么?我最近的头痛源于这段代码编译失败:uint8_tread(decltype(cin)&s){charc;s.get(c);returnreint

c++ - 类中的 ofstream - 试图引用已删除的函数

我看过这个问题:Attemptingtoreferenceadeletedfunction(VS2013)但它没有给我答案。我在类中有一个成员变量,它的类型是ofstream和一个包含字符串参数的构造函数:classdogs{public:ofstreamdogsFile;dogs(stringlocation){}};出现如下错误:Error2errorC2280:'std::basic_ofstream>::basic_ofstream(conststd::basic_ofstream>&)':attemptingtoreferenceadeletedfunctionc:\user

c++ - 错误:无法将 std::vector<std::basic_string<char>> 转换为 std::string*

作为C++的新手,我曾尝试在我的一个程序中创建一个简单的void函数以显示数组。但是,如标题所示,存在错误。我认为这是一个问题,因为我试图用与函数参数不同形式的数组来调用它。我不确定如何修改它。#include#includeusingnamespacestd;voiddisplay_array(stringarr[]){inti;for(i=0;ipaths;cout>current;while(current!="0"){paths.push_back(current);cin>>current;}display_array(paths);}感谢任何帮助。

c++ - C/C++ 读取未知长度的 char* 输入

这个问题在这里已经有了答案:HowcanIreadaninputstringofunknownlength?(11个答案)关闭6年前。我想知道是否可以读取未知大小的字符串,直到有空格或到达换行符。我在C++中所做的是这样的:char*dynStr;charbuffer[20];cin>>buffer;dynStr=newchar[strlen(buffer)+1];strcpy(dynStr,buffer);但是问题来了,如果输入的input大于20怎么办?所以我认为它应该是这样的:do{cin.get(buffer,20,'');//imnotsurethisistherightap

c++ - 返回填充在函数内部的 const char* vector 是否是明确定义的行为

我目前正在学习vulkan。在其中一个教程中,我看到了一个大致执行以下操作的函数:#defineSOMESTRING"HelloWorld!"std::vectorbuildVector(){std::vectorvec;vec.push_back(SOMESTRING);returnvec;}当我看到这个时,我想知道:这是定义的行为吗?字符串"HelloWorld!"的内容不是位于堆栈中,因此一旦函数返回就无效了吗?如果这是未定义的行为,那么正确的方法是什么?不幸的是,由于vulkanAPI,无法使用std::string。 最佳答案