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

What is the purpose of "input.length();"?

本文关键字:是什么 input length      更新时间:2023-10-16

我正在参加一门大学级别的C++课程,坦率地说,没有什么真正的解释。我得到了要编写的代码,我的程序也能正常工作。我只是想知道某些行的用途。

例如:

int i = 0;

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

int length = input.length();  

我知道我正在声明一个名为lengthint变量。。。但是它在我的代码中有什么作用呢?

i++

我想这结束了我的循环?

我添加了我的代码以供阅读。如有任何协助,我们将不胜感激!

// Program takes user entered letter and matches it with the corresponding ICAO word.
//Program has been modified to use void and string methods
#include "stdafx.h"
#include "iostream"
#include "string"
using namespace std;
//Function Heading
void convert(string);
//Main Function
int main()
{
string input;
cout << " Enter a letter or word: ";   // Ask the user to enter a letter or word.
cin >> input;                          //get input
cout << "Phonetic Version : ";         //Display "Phonetic Version"
convert (input);                        
cout << endl;
system("pause");
}//End Main
//Function Definition
void convert(string input)
{
int i = 0;      //input variable
char letters;   //character variable 
int length = input.length(); 
while (i < length)      //While loop initialized
{
letters = input.at(i);
if (letters == 'a' || letters == 'A')
cout << "Alpha ";
else if (letters == 'b' || letters == 'B')
cout << "Bravo ";
else if (letters == 'c' || letters == 'C')
cout << "Charlie ";
else if (letters == 'd' || letters == 'D')
cout << "Delta ";
else if (letters == 'e' || letters == 'E')
cout << "Echo ";
else if (letters == 'f' || letters == 'F')
cout << "Foxtrot ";
else if (letters == 'g' || letters == 'G')
cout << "Golf ";
else if (letters == 'h' || letters == 'H')
cout << "Hotel ";
else if (letters == 'i' || letters == 'I')
cout << "India ";
else if (letters == 'j' || letters == 'J')
cout << "Juliet ";
else if (letters == 'k' || letters == 'K')
cout << "Kilo ";
else if (letters == 'l' || letters == 'L')
cout << "Lima ";
else if (letters == 'm' || letters == 'M')
cout << "Mike ";
else if (letters == 'n' || letters == 'N')
cout << "November ";
else if (letters == 'o' || letters == 'O')
cout << "Oscar ";
else if (letters == 'p' || letters == 'P')
cout << "Papa ";
else if (letters == 'q' || letters == 'Q')
cout << "Quebec ";
else if (letters == 'r' || letters == 'R')
cout << "Romeo ";
else if (letters == 's' || letters == 'S')
cout << "Sierra ";
else if (letters == 't' || letters == 'T')
cout << "Tango ";
else if (letters == 'u' || letters == 'U')
cout << "Uniform ";
else if (letters == 'v' || letters == 'V')
cout << "Victor ";
else if (letters == 'w' || letters == 'W')
cout << "Whiskey ";
else if (letters == 'x' || letters == 'X')
cout << "X-ray ";
else if (letters == 'y' || letters == 'Y')
cout << "Yankee ";
else if (letters == 'z' || letters == 'Z')
cout << "Zulu ";
i++;
}
}
int length = input.length();  

我知道我正在声明一个名为length的int变量。。。但目的是什么它符合我的代码吗?

无。

如果input的长度稍后会发生变化,并且出于某种原因您需要记住旧的长度,这将起到一定的作用。

由于这里的情况并非如此,您的教授可能会认为这是某种"优化",理由是重复调用length()可能太慢。但这是无稽之谈;你的计算机太快了,这种微观优化无法产生明显的效果,尤其是现代编译器在优化程序方面比程序员本身要好得多。

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

此处为

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
int i = 0;

我知道我正在声明一个int变量,它=0。这里我的问题是为什么字母i?这可以是我选择的任何变量名吗?

是。变量名是任意的,您可以随意命名(当然,在语言语法的限制范围内(。只要确保在使用名称的上下文中使用有意义的名称即可。随着时间的推移维护代码时,可读性很重要。

int length = input.length(); 

我知道我正在声明一个名为lengthint变量。。。但是它在我的代码中有什么作用呢?

制作input字符串的字符计数的本地缓存副本,这样您的循环就不必反复调用该字符串的length()方法。使用几个字节的本地堆栈空间可以节省检索字符串长度的时间和开销,这在循环运行时不会改变。

i++

我想这结束了我的循环?

它只增加i变量的值。当while语句的求值结果为false时(当i赶上length时(,循环结束。