什么是在 C++ 中将 `char()` 作为函数调用?
What is a call to `char()` as a function in C++?
我以前从未见过这种对 char()
的调用是一个函数。这是在哪里描述的,它是什么意思?此用法是此 cppreference.com 社区维基页面上示例的一部分:https://en.cppreference.com/w/cpp/string/basic_string/resize:
short_string.resize( desired_length + 3 );
std::cout << "6. After: \"";
for (char c : short_string) {
std::cout << (c == char() ? '@' : c); // <=== HERE ===
}
描述中的这个措辞对我来说也没有任何意义,我不明白它在说什么:
Initializes appended characters to CharT()
.
在上下文中突出显示:
相邻
- 促使我研究
std::string::resize()
方法的是尝试学习如何预分配一个 std::string
以便在 C 函数调用中用作 char*
缓冲区。这可以通过调用 my_string.resize()
函数来预先分配 std::string
来实现。然后,您可以安全地将 &my_string[0]
作为标准 char*
写入到索引 my_string.size() - 1
。也可以看看:
- Is there a way to get std:string's buffer
- How to convert a
std::string
to const char*
or char*
- 参见 my detailed answer to this question here。
它returns0
指定类型,同char(0)
。叫做值初始化.
语法模仿为 class.
调用默认构造函数的语法
是char
的构造函数†;没有参数,它构造 '[=11=]'
。很少使用,因为原语提供了其他初始化它们的方法,但是你用 ()
初始化它们就像你 user-defined class 一样,这确保它们被初始化为 something; char foo;
具有未定义的值,而 char foo = char();
或 char foo{};
肯定是 '[=11=]'
。
†正如 HolyBlackCat 所指出的,从技术上讲,它不是构造函数,因为它不是 class,但在大多数情况下它的行为与构造函数相似。
我以前从未见过这种对 char()
的调用是一个函数。这是在哪里描述的,它是什么意思?此用法是此 cppreference.com 社区维基页面上示例的一部分:https://en.cppreference.com/w/cpp/string/basic_string/resize:
short_string.resize( desired_length + 3 );
std::cout << "6. After: \"";
for (char c : short_string) {
std::cout << (c == char() ? '@' : c); // <=== HERE ===
}
描述中的这个措辞对我来说也没有任何意义,我不明白它在说什么:
Initializes appended characters to
CharT()
.
在上下文中突出显示:
相邻
- 促使我研究
std::string::resize()
方法的是尝试学习如何预分配一个std::string
以便在 C 函数调用中用作char*
缓冲区。这可以通过调用my_string.resize()
函数来预先分配std::string
来实现。然后,您可以安全地将&my_string[0]
作为标准char*
写入到索引my_string.size() - 1
。也可以看看:- Is there a way to get std:string's buffer
- How to convert a
std::string
toconst char*
orchar*
- 参见 my detailed answer to this question here。
它returns0
指定类型,同char(0)
。叫做值初始化.
语法模仿为 class.
调用默认构造函数的语法是char
的构造函数†;没有参数,它构造 '[=11=]'
。很少使用,因为原语提供了其他初始化它们的方法,但是你用 ()
初始化它们就像你 user-defined class 一样,这确保它们被初始化为 something; char foo;
具有未定义的值,而 char foo = char();
或 char foo{};
肯定是 '[=11=]'
。
†正如 HolyBlackCat 所指出的,从技术上讲,它不是构造函数,因为它不是 class,但在大多数情况下它的行为与构造函数相似。