问题标签 [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.
c++ - 让空间与 C++ 输入流一起玩得很好
首先考虑这个示例 C++ 代码:
如果对于 input1,我输入“Good day neighbors”之类的内容,则 input1 设置为“Good”,input2 设置为“day”,输入 3 设置为“neighbors”。我什至没有机会为 input2 和 input3 设置值。
所以我的问题是:如何将包含空格的文本字符串输入到单个字符串中,而不会将其(由于缺乏更好的术语)分解并溢出到对输入流的后续调用中?
提前感谢收到的任何和所有答案。
c++ - std::ofstream 对象不能正确关闭的任何原因?
我注意到在我的 C++ 代码中,每当我关闭一个std::ofstream
对象时,我都无法重新打开我关闭的文件std::ifstream
。std::ifstream
的open
功能总是会失败。
我可以做些什么“额外”来确保我的 std::ofstream 对象正确关闭?
可能有人会要求查看我的特定代码,所以为了保持这篇文章的篇幅较小,我将其粘贴在这里。在我的代码中运行 case a 或 d 后,所有std::ifstream
打开的调用都失败了。(在发布这个问题之前,我有几个人在玩我的代码,除了std::ofstream
由于未知原因而关闭失败之外,他们无法得出任何结论)
提前感谢收到的所有回复。
代码是
c++ - stringstream 如何在内部工作?
我是在性能方面问的。stringstream 只是一个字符串/向量,因此写入它可能会导致其整个内容被复制到更大的内存块中,还是以更棘手的方式完成(例如,字符串列表或其他)?
c - C: strchr() 和 index() 的区别
我在 C 中做一些需要使用字符串的事情(就像大多数程序一样)。
查看联机帮助页,我在 string(3) 处发现:
概要
所以我好奇地看了 strchr(3) 和 index(3)...
我发现两者都执行以下操作:
strchr()/index() 函数在 s 指向的字符串中定位 c 的第一次出现。终止空字符被认为是字符串的一部分;因此,如果 c 是 '\0',则函数定位终止的 '\0'。
因此,联机帮助页基本上是复制和粘贴。
此外,我认为,由于某些混淆的必要性,第二个参数具有 type int
,但实际上是 a char
。我想我没有错,但任何人都可以向我解释为什么它是一个int
,而不是一个char
?
如果它们都相同,那么哪个版本更兼容,如果不是,那有什么区别?
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.
c++ - 连接字符串不能按预期工作
我知道这是一个常见问题,但在寻找参考资料和其他材料时,我找不到这个问题的明确答案。
考虑以下代码:
编译器告诉我它找不到char[dim]
.
这是否意味着字符串中没有 + 运算符?
但在几个例子中,有这样一种情况。如果这不是连接更多字符串的正确方法,那么最好的方法是什么?
c++ - 使用自定义比较器返回 priority_queue
我有一个函数需要根据一些输入参数返回一个排序列表。我选择了一个std::priority_queue
来保存这个列表。
但是编译器给了我一个我不认识的错误。这是我的代码:
conversion from 'HeuristicList (*)(DepthCompare)' to non-scalar type 'HeuristicList' requested
编译器在 return 语句的行上说 a 。
看起来我并没有试图返回一个指针。怎么了?
c++ - C++ 标准库是否必须用 C 或汇编语言编写?
是否可以仅使用 C++ 编写完整的 C++ 标准库(当然包括 STL,但自包含,仅内部依赖项)?我会想象容器和<cstdlib>
功能在char
s、bitshift、for 循环和其他字节奇特的东西方面是可行的,但是像异常之类的东西,如果没有依赖,我可能会std::cout
觉得std::cin
很难。假设有一组可用的 OS 功能,它们完全在汇编中实现(以避免任何 C 污染)。
我假设编译器了解从类和虚函数到模板和函数重载的所有内容,这些都是语言级别的东西,恕我直言,在库中没有位置。
如果以前有人问过这个问题或者是一个非常愚蠢的问题,请原谅我。我不是想在这里开始一场 C<->C++ 战争,只是想弄清楚实现标准库等野兽的局限性......
谢谢!
c++ - Python 标准库的 C/C++ 等效项
对于有用的数据结构和操纵器(例如,和)以及实用程序(例如,,和) ,我都非常依赖Python 的标准库,以跳过样板文件并完成工作。翻阅有关 C++ 标准库的文档,它似乎完全是关于数据结构的,几乎没有 Python 标准库中“包含的电池”的方式。collections
itertools
optparse
json
logging
Boost 库是我所知道的唯一一个类似于 Python 标准库的开源 C++ 库集合,但是虽然它确实具有正则表达式支持等实用程序库,但其中大部分也专用于数据结构。我真的很惊讶,即使是像保证解析和编写 CSV 文件这样简单的事情,使用Pythoncsv
模块变得非常简单,看起来也需要在 C++ 中自行滚动(即使您利用 Boost 的一些解析库)。
是否还有其他提供“电池”的 C++ 开源库?如果没有,作为 C++ 程序员,你会做什么:寻找单独的实用程序库(如果是,如何),或者只是自己开发(这看起来很烦人且浪费)?
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 工作。