C++ 使用 Visual Studio 2020 不能使用 .length()

C++ Using Visual Studio 2020 cant use .length()

本文关键字:length 不能 使用 Visual Studio 2020 C++      更新时间:2023-10-16

如果这真的很基本,我很抱歉,但我刚刚开始,非常困惑。我正在尝试使用 .length(( 查找字符串 s 的长度,我已经包含 #include,#include"genlib.h"和 #include"simpio.h",但仍然收到错误。

#include <iostream>
#include "genlib.h"
#include "simpio.h"
#define MAX_HASH_CODE   10000   
int Hash( int maxCode, string s);
#define Multiplier -1664117991L     // Multiplier used in Hash function
int Hash(int maxCode, string s)
{
unsigned long hashcode = 0;
for (int i = 0; i < s.length(); i++) 
hashcode = hashcode * Multiplier + s[i];
return (hashcode % maxCode);

}
int main ()
{
std::cout << "Please enter your name: ";
string name = GetLine();
int hashcode = Hash(MAX_HASH_CODE, name);
std::cout << " The hash code for your name is " << hashcode << "." <<std::endl;
return 0;
}

s.length(( 只是给出一个错误并说:

请求成员 's' 中的 'length',它是非类类型'字符串' {aka 'char*'}gcc

错误图像

通过查看错误消息,您似乎使用的是Visual Code IDE,而不是Visual Studio。

您遇到错误的原因是因为它无法将s识别为string,因为您尚未将其定义为这样。即使您声明sstring型,它也不是stdstring。仅当您使用#include <string>导入<string>库时,数据类型string才可用;但是,在C++中,所有标准库都包含在命名空间中,std.要访问std中的 cout 和字符串等函数,只需在顶部包含using namespace std;,例如include语句。但是,请注意,通过执行此操作,使用与std命名空间中的函数同名声明的任何方法都将创建名称冲突。您可以改为通过命名空间前缀std::调用该函数,您正在使用std::cout

要解决您的问题,请导入<string>库,包括std命名空间,或者每次要使用字符串时,请使用std::string s来阐明您想要stdstring

方法 1(仅适用于 C,不适用于 C++(:

#include <string>
string s;
int length = s.length()

方法2:

using namespace std;
string s;
int length = s.length()

方法3:

std::string s;
int length = s.length()

另外,像这样的类似问题已经发布在这里: 为什么我得到字符串不命名类型错误?