“ input.length();”的目的是什么?

时间:2018-10-27 07:39:12

标签: c++

我正在上大学水平的C ++课程,坦率地说,实际上什么也没解释。给我要编写的代码,我的程序可以正常工作。我只想知道某些行的目的。

例如:

int i = 0;

我知道我要声明一个int变量=0。这是为什么字母i是为什么?可以是我选择的任何变量名吗?

int length = input.length();  

我知道我正在声明一个名为int的{​​{1}}变量...但是它在我的代码中起什么作用?

length

我认为这结束了我的循环?

我添加了我的代码以供细读。任何帮助将不胜感激!

i++

3 个答案:

答案 0 :(得分:0)

这里

string input;

std::string有一个称为length()的方法,该方法以字节为单位返回字符串的长度。因此,您正在使用像

int length = input.length(); /* use variable name as other than predefined method to avoid confusion */
     |               |
 this is just       this is a method of string
 a int variable

答案 1 :(得分:0)

int i = 0;
     

我知道我要声明一个int变量=0。这是为什么字母i是为什么?可以是我选择的任何变量名吗?

是的。变量名是任意的,可以根据需要命名(当然,在语言语法的限制内)。只要确保您使用的名称在使用上下文中有意义即可。长期维护代码时,可读性很重要。

int length = input.length(); 
     

我知道我要声明一个名为int的变量length ...但是它在我的代码中起什么作用?

要对input字符串的字符计数进行本地缓存,因此您的循环不必不断重复调用字符串的length()方法。使用几个字节的本地堆栈空间可以节省时间和检索字符串长度的开销,而该长度在循环运行时不会改变。

i++
     

我认为这结束了我的循环?

它将递增i变量的值,仅此而已。当while语句的评估结果为false时(当i追上length时,循环结束。

答案 2 :(得分:0)

int length = input.length();  
     

我知道我要声明一个名为length的int变量...但是目的是什么   它可以在我的代码中使用吗?

没有。

如果input的长度以后会改变,并且出于某种原因您需要记住旧的长度,这将有一定的用途。

由于不是这种情况,您的教授可能会认为这是某种“优化”,原因是反复调用length()可能会太慢。但这是胡扯。您的计算机速度太快,以至于微优化无法产生明显的效果,尤其是现代编译器在优化程序方面比程序员本身要好得多。

只需删除length变量即可使代码更短。

相关问题