问题标签 [standard-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
693 浏览

c++ - 让空间与 C++ 输入流一起玩得很好

首先考虑这个示例 C++ 代码:

如果对于 input1,我输入“Good day neighbors”之类的内容,则 input1 设置为“Good”,input2 设置为“day”,输入 3 设置为“neighbors”。我什至没有机会为 input2 和 input3 设置值。

所以我的问题是:如何将包含空格的文本字符串输入到单个字符串中,而不会将其(由于缺乏更好的术语)分解并溢出到对输入流的后续调用中?

提前感谢收到的任何和所有答案。

0 投票
1 回答
3837 浏览

c++ - std::ofstream 对象不能正确关闭的任何原因?

我注意到在我的 C++ 代码中,每当我关闭一个std::ofstream对象时,我都无法重新打开我关闭的文件std::ifstreamstd::ifstreamopen功能总是会失败。

我可以做些什么“额外”来确保我的 std::ofstream 对象正确关闭?

可能有人会要求查看我的特定代码,所以为了保持这篇文章的篇幅较小,我将其粘贴在这里。在我的代码中运行 case a 或 d 后,所有std::ifstream打开的调用都失败了。(在发布这个问题之前,我有几个人在玩我的代码,除了std::ofstream由于未知原因而关闭失败之外,他们无法得出任何结论)

提前感谢收到的所有回复。

代码是

0 投票
2 回答
4705 浏览

c++ - stringstream 如何在内部工作?

我是在性能方面问的。stringstream 只是一个字符串/向量,因此写入它可能会导致其整个内容被复制到更大的内存块中,还是以更棘手的方式完成(例如,字符串列表或其他)?

0 投票
2 回答
17216 浏览

c - C: strchr() 和 index() 的区别

我在 C 中做一些需要使用字符串的事情(就像大多数程序一样)。

查看联机帮助页,我在 string(3) 处发现:

概要

所以我好奇地看了 strchr(3) 和 index(3)...

我发现两者都执行以下操作:

strchr()/index() 函数在 s 指向的字符串中定位 c 的第一次出现。终止空字符被认为是字符串的一部分;因此,如果 c 是 '\0',则函数定位终止的 '\0'。

因此,联机帮助页基本上是复制和粘贴。

此外,我认为,由于某些混淆的必要性,第二个参数具有 type int,但实际上是 a char。我想我没有错,但任何人都可以向我解释为什么它是一个int,而不是一个char

如果它们都相同,那么哪个版本更兼容,如果不是,那有什么区别?

0 投票
3 回答
1612 浏览

c++ - c++ toupper - standard function?

Possible Duplicate:
Convert a String In C++ To Upper Case

Hi, I need a portable function to convert string in c++ to upper case. I'm now using toupper( char); function. Is it a standard function? If not, what it's the correct way to do it across platforms? Btw, is there any web / wiki where I can list all c++ standard functions? Thank you.

0 投票
4 回答
220547 浏览

c++ - 连接字符串不能按预期工作

我知道这是一个常见问题,但在寻找参考资料和其他材料时,我找不到这个问题的明确答案。

考虑以下代码:

编译器告诉我它找不到char[dim].

这是否意味着字符串中没有 + 运算符?

但在几个例子中,有这样一种情况。如果这不是连接更多字符串的正确方法,那么最好的方法是什么?

0 投票
2 回答
1957 浏览

c++ - 使用自定义比较器返回 priority_queue

我有一个函数需要根据一些输入参数返回一个排序列表。我选择了一个std::priority_queue来保存这个列表。

但是编译器给了我一个我不认识的错误。这是我的代码:

conversion from 'HeuristicList (*)(DepthCompare)' to non-scalar type 'HeuristicList' requested 编译器在 return 语句的行上说 a 。

看起来我并没有试图返回一个指针。怎么了?

0 投票
4 回答
1254 浏览

c++ - C++ 标准库是否必须用 C 或汇编语言编写?

是否可以仅使用 C++ 编写完整的 C++ 标准库(当然包括 STL,但自包含,仅内部依赖项)?我会想象容器和<cstdlib>功能在chars、bitshift、for 循环和其他字节奇特的东西方面是可行的,但是像异常之类的东西,如果没有依赖,我可能会std::cout觉得std::cin很难。假设有一组可用的 OS 功能,它们完全在汇编中实现(以避免任何 C 污染)。

我假设编译器了解从类和虚函数到模板和函数重载的所有内容,这些都是语言级别的东西,恕我直言,在库中没有位置。

如果以前有人问过这个问题或者是一个非常愚蠢的问题,请原谅我。我不是想在这里开始一场 C<->C++ 战争,只是想弄清楚实现标准库等野兽的局限性......

谢谢!

0 投票
5 回答
2943 浏览

c++ - Python 标准库的 C/C++ 等效项

对于有用的数据结构和操纵器(例如,和)以及实用程序(例如,,和) ,我都非常依赖Python 的标准库,以跳过样板文件并完成工作。翻阅有关 C++ 标准库的文档,它似乎完全是关于数据结构的,几乎没有 Python 标准库中“包含的电池”的方式。collectionsitertoolsoptparsejsonlogging

Boost 库是我所知道的唯一一个类似于 Python 标准库的开源 C++ 库集合,但是虽然它确实具有正则表达式支持等实用程序库,但其中大部分也专用于数据结构。我真的很惊讶,即使是像保证解析和编写 CSV 文件这样简单的事情,使用Pythoncsv模块变得非常简单,看起来也需要在 C++ 中自行滚动(即使您利用 Boost 的一些解析库)。

是否还有其他提供“电池”的 C++ 开源库?如果没有,作为 C++ 程序员,你会做什么:寻找单独的实用程序库(如果是,如何),或者只是自己开发(这看起来很烦人且浪费)?

0 投票
14 回答
8760 浏览

c - C 标准库中的哪些函数通常会鼓励不良做法?

这是受到这个问题和对一个特定答案的评论的启发,因为我了解到这strncpy在 C 中不是一个非常安全的字符串处理函数,并且它会填充零,直到达到n,这是我不知道的。

具体来说,引用R..

strncpy 不会以空值终止,而是对目标缓冲区的整个剩余部分进行空值填充,这是对时间的巨大浪费。您可以通过添加自己的空填充来解决前者,但不能解决后者。它从未打算用作“安全字符串处理”功能,而是用于处理 Unix 目录表和数据库文件中的固定大小字段。snprintf(dest, n, "%s", src) 是标准 C 中唯一正确的“安全 strcpy”,但它可能会慢很多。顺便说一句,截断本身可能是一个主要错误,并且在某些情况下可能会导致特权提升或 DoS,因此抛出“安全”字符串函数来截断其输出并不是一种使其“安全”或“安全的”。反而,

来自乔纳森·莱弗勒

请注意,strncat() 的接口比 strncpy() 更令人困惑——这个长度参数到底是什么?根据您提供的 strncpy() 等,这不是您所期望的 - 所以它甚至比 strncpy() 更容易出错。对于复制字符串,我越来越认为有一个强有力的论点是你只需要 memmove() 因为你总是提前知道所有的大小并确保提前有足够的空间。使用 memmove() 优先于 strcpy()、strcat()、strncpy()、strncat()、memcpy() 中的任何一个。

所以,我显然对 C 标准库有点生疏了。因此,我想提出一个问题:

哪些 C 标准库函数使用不当/可能导致/导致安全问题/代码缺陷/效率低下?

为了客观起见,我有一些答案标准:

  • 如果可以的话,请引用相关功能背后的设计原因,即其预期目的。
  • 请突出显示代码当前被滥用的地方。
  • 请说明为什么这种滥用会导致问题。我知道这应该很明显,但它会阻止软答案。

请避免:

  • 关于函数命名约定的辩论(除非这明确引起混淆)。
  • “我更喜欢 x 而不是 y” - 偏好是可以的,我们都有它们,但我对实际的意外副作用以及如何防范它们感兴趣。

由于这可能被认为是主观的并且没有明确的答案,因此我立即标记为社区 wiki。

我也在按照 C99 工作。