VF中的COUNT TO 是啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VF中的COUNT TO 是啥意思?相关的知识,希望对你有一定的参考价值。
参考技术A 统计,将结果输入TO后接的变量中。本回答被提问者采纳 参考技术B 统计行数 参考技术C count命令,表中的记录数。统计符合条件的记录数存储在变量或数组。
语法:
COUNT
[Scope] [FOR lExpression1] [WHILE lExpression2]
[TO VarName]
[NOOPTIMIZE]
参数:
Scope
指定要包括在计数的记录范围。范围条款是:ALL,NEXT nRecords,记录nRecordNumber和REST。有关范围的条款的详细信息,请参阅Scope子句在线的话题。命令,其中包括适用范围仅在表中活动工作区进行操作。
FOR lExpression1
指定仅满足逻辑条件lExpression1记录进行计数。包括有记录条件数,过滤掉不需要的记录。拉什莫尔将优化计数查询,如果lExpression1是一个可优化表达式。为了获得最佳性能,使用可优化表达式FOR子句。
WHILE lExpression2
指定一个状态,其中记录的,只要逻辑表达式lExpression2计算结果为true计数(.T.)。
TO VarName
指定要记录计数存储在变量或数组。如果指定的变量不存在,Visual FoxPro将创建它。
NOOPTIMIZE
禁用COUNT命令的拉什莫尔优化。
COUNT命令例子:
下面的例子中进行计数,并显示在巴黎的顾客数量。
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table
CLEAR
COUNT FOR UPPER(city) = 'PARIS'
DISPLAY FIELDS company, contact FOR UPPER(city) = 'PARIS'
“::tolower”中的“::”是啥意思?
【中文标题】“::tolower”中的“::”是啥意思?【英文标题】:What does the "::" mean in "::tolower"?“::tolower”中的“::”是什么意思? 【发布时间】:2011-07-13 08:23:06 【问题描述】:我见过这样的代码:
std::string str = "wHatEver";
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
我有一个问题:::
在 tolower 之前是什么意思?
和std::tolower
不工作,但::tolower
工作正常
【问题讨论】:
从技术上讲,它被称为 scope resolution operator。这应该会给你一个词来开始搜索更多细节。 【参考方案1】:至于为什么需要::
:标准定义了两个tolower
,
std::
中的函数模板,::
和中的简单函数
std::
。取决于已包含哪些标头(包括
从其他标题中间接包含的标题,您可能不知道
about),其中一个、另一个或两者都可能是可见的。使用::
确保
使用来自 C 标准的旧版本。 (如果std::
中的那个
考虑到,调用将是模棱两可的,因为 transform 是一个模板
本身,编译器将无法推导出模板
论据。)
当我在这里时,我可能会提到像这样使用::tolower
未定义的行为,至少在普通字符已签名的情况下。输入到
::tolower
是一个 int,必须在 0
...UCHAR_MAX
或 EOF
范围内。如果
普通字符已签名,某些字符可能有负数
编码,这会导致未定义的行为。在实践中,大多数
实现使这项工作。对于除0xFF
以外的所有字符(ÿ 在
拉丁语 1)。如果你不关心可移植性,一些编译器有
使 char 无符号的开关---使用它。否则,写一个小
正确处理它的功能对象:
struct ToLower
char operator()( char ch ) const
return ::tolower( static_cast<unsigned char>(ch) );
;
或(更好,但工作量要大得多——只有在您使用它时才值得
很多),一个功能对象,其构造函数采用语言环境(默认
到全局语言环境)并包含对std::ctype
的引用,它
它用于tolower
函数。 (当然,如果你真的
国际化,tolower
可能没有任何意义。和
您将使用 UTF-8,它是一种多字节编码,并且不起作用
任何可用的可能性。)
【讨论】:
【参考方案2】:表示它在全局命名空间中显式使用tolower
(大概是stdc lib之一)。
例子:
void foo()
// This is your global foo
namespace bar
void foo()
// This is bar's foo
using namespace bar;
void test()
foo(); // Ambiguous - which one is it?
::foo(); // This is the global foo()
【讨论】:
谢谢,但我不明白,你写的——使用命名空间栏;为什么编译器不会使用 bar 中的 foo?为什么在使用命名空间 bar 之后需要写 bar::foo;你能解释一下吗? “使用命名空间栏”意味着foo()
本身就暗示了bar::foo()
。但是,也许您打算在全局范围内使用foo()
?也可以通过foo()
访问。所以foo()
可以同时用于两者。现在编译器不确定你指的是哪一个,所以你必须指定。
@EboMike "foo()
本身暗示 bar::foo()
" 太强大了。在查找 foo
的匹配项时,名称查找会考虑 bar::foo
(在这种情况下会发现与 ::foo
的歧义)【参考方案3】:
使用全局命名空间中的版本。 (如果std::
不起作用,可能包括<ctypes.h>
而不是<cctypes>
)
【讨论】:
谢谢。我使用 Visual C++ 6。所以 :: 说要使用全局命名空间中的 tolower 是的,tolower 的另一个潜在重载在<locale>
中(我说可能是因为我不知道 VC++6 在这一点上的一致性如何……为什么要使用这么旧的编译器?)
"为什么要使用这么老的编译器?"哦,不要问))这是因为非常古老的项目
这是唯一一个有效的理由(但如果项目必须继续,我会计划切换)。我们看到太多的学习者仍在使用它。【参考方案4】:
:: 是全局命名空间。
#include <iostream>
void bar()
std::cout << "::bar" << std::endl;
namespace foo
void bar()
std::cout << "foo::bar" << std::endl;
int main()
bar();
foo::bar();
::bar();
using namespace foo;
foo::bar();
::bar(); // bar() would be ambiguous now without ::
【讨论】:
评论不够清楚:没有 :: 的 bar() 会模棱两可 @Nawaz:在投票之前仔细阅读 cmets。他说如果没有::
,::bar()
将是模棱两可的。其实it is.
@Cody:评论在 5 分钟内编辑完毕。以前是 "bar() will be ambiguous" 这显然是错误的!
讽刺的是,原来的评论是模棱两可的! (这本身并没有错。当前的解释是完全合乎逻辑的,即使给出了原始措辞。)
@Cody:代码不是模棱两可的,但评论说“bar() 会模棱两可”。现在有什么困惑吗?以上是关于VF中的COUNT TO 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章