- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
#include <iostream>
#include <string>
#include <cctype>
using std::string;
using std::cin;
using std::cout; using std::endl;
int main()
{
string s("Hello World!!!");
decltype(s.size()) punct_cnt = 0;
for (auto c : s)
if (ispunct(c))
++punct_cnt;
cout << punct_cnt
<< " punctuation characters in " << s << endl;
}
似乎我可以在没有 std::
或声明 using std::ispunct;
的情况下使用 ispunct()
但我不能使用 std::cout
或 std::cin
执行此操作。为什么会这样?
最佳答案
这意味着 ispunct
是全局命名空间的一部分,而不是 std
命名空间的一部分。这可能是因为 ispunct
是从 C 带来的功能之一(因此它在 cctype
中)。
另一方面,cout
和 cin
是 std
命名空间的一部分,而不是全局命名空间。
至于 为什么 来自 C 的东西在全局命名空间中而不是在 std
命名空间中,我相信这与允许 C 代码通过 C++ 编译器进行最小更改进行编译有关,因为 C++ aims to be compatible with C .
根据评论,ispunct
允许,但不是必需,在全局命名空间中(但必需在std
命名空间),在 <cctype>
中。但是,如果您改为包含 <ctype.h>
,则 ispunct
将是要求在全局命名空间中。
关于c++ - 为什么在 C++ 中使用 ispunct() 时不需要 std::?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18047031/
我目前正在为 Javascript 中的函数 isPunct 编写一个命令行程序,并且正在努力启动和完全完成它。这是我到目前为止所拥有的: function isPunct(str) { var
我有一个字符串,包括: UNIX is basically a simple operating system, but you have to be a genius to understand t
我正在尝试读入文件并从文件中删除所有标点符号。我一直在使用 ispunct() 遍历字符串并检查字符是否是标点符号,但它似乎没有捕捉到所有标点符号。我想知道我是否做错了什么。这是我的代码: 2.txt
我在构建“ReplacePuncsWithBlanks”函数后遇到断言失败。和我在数组首尾插入空格有什么关系吗? #include #include using namespac
for (int i = 0; i < strlen(s); i++) if(ispunct(s[i])) 我需要编写函数,其中我必须计算标点符号,如下所示;但是 ispunct 函数并
ispunct() 在以这种方式分隔单词时效果很好“一,二;三”。然后它将删除“,;”并替换为给定的字符。 但如果以这种方式给出字符串 "ts='TOK_STORE_ID';" 那么它会将 "ts='
我正在使用 Stanley B.Lippman 的 C++primer 这本书,这个错误是由 Excersise 3.2.3 test 3.10 的解决方案引起的。它需要编写一个程序来读取包含标点符号
char punct(char a[], int len) { for (int i = 0; i < len; i++) { if (ispunct(a[i]))
这个问题在这里已经有了答案: Check if string is a punctuation character (7 个答案) 关闭 7 年前。 是否有与 C99 标准函数“ispunct()”
我正在编写一个处理大部分文本的程序,需要删除标点符号。我遇到了一个 Debug Assertion Failed 错误,并将其隔离为:在非英文字母上测试 ispunct() 时发生。 我的测试程序现在
我想编写一个代码来检查 MAC 地址的正确性。输入应类似于 D7:6E:F4:30:17:2B。我正在考虑使用函数 isdigit() 和 isupper()。不知道如何让用户可以写入“:”符号并阻止
我试图将 std::ispunct 作为最后一个参数传递给 remove_copy_if,但发现编译失败。但是,如果我传递 ispunct(只是删除了 std::),程序会按预期编译和运行。 代码:
#include #include #include using std::string; using std::cin; using std::cout; using std::endl; i
我试图通过用户输入来识别字母、数字和标点符号的数量,我得到了数字的数量,但字母和标点符号不正确! . 我不知道为什么..这是我的代码 #include #include #include int
这段代码只输出大写字母的个数。它总是将 numMarks 和 numSpaces 输出为 0。我也尝试过 sentence.c_str() 得到相同的结果。我无法理解发生了什么。 cout int
我是一名优秀的程序员,十分优秀!