在关于http://en.cppreference.com/w/cpp/locale/codecvt上看到的std::codecvt
的示例中,有这样的语法:
for (char16_t c : str16)
知道str16是一个变量(l值)std::u16string str16
。
这是什么意思?
这就是我在标题中称之为type var : var
的内容。
PS:是否有一个引用所有特定语法类型的主题?罕见的?
最近我看到了:
int ackermann(m,n)
int m,n;
{
// function definition
}
答案 0 :(得分:3)
for (char16_t c : str16)
上面的语法定义了一个基于范围的for循环(在C ++ 11中引入)。它基本上说:
循环遍历
str16
中的每个字符,将字符复制到名为c
的变量中,并允许我使用它。
例如:
for (char16_t c : str16)
{
std::cout << c << std::endl;
}
你的第二个例子是K&amp; R风格的C函数定义,并且已经过时了。有关详细信息,请参阅此处:Function declaration: K&R vs ANSI
答案 1 :(得分:0)
这称为range-based for。这是自C ++ 11以来遍历整个容器的非常常见的习惯用法。
答案 2 :(得分:0)
for (char16_t c : str16)
是C ++ 11中引入的新的ranged-for循环语法,有很多例子和解释。