C++ 使用 Visual Studio 2020 不能使用 .length()
C++ Using Visual Studio 2020 cant use .length()
如果这真的很基本,我很抱歉,但我刚刚开始,非常困惑。我正在尝试使用 .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
,因为您尚未将其定义为这样。即使您声明s
是string
型,它也不是std
string
。仅当您使用#include <string>
导入<string>
库时,数据类型string
才可用;但是,在C++中,所有标准库都包含在命名空间中,std
.要访问std
中的 cout 和字符串等函数,只需在顶部包含using namespace std;
,例如include
语句。但是,请注意,通过执行此操作,使用与std
命名空间中的函数同名声明的任何方法都将创建名称冲突。您可以改为通过命名空间前缀std::
调用该函数,您正在使用std::cout
。
要解决您的问题,请导入<string>
库,包括std
命名空间,或者每次要使用字符串时,请使用std::string s
来阐明您想要std
string
。
方法 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()
另外,像这样的类似问题已经发布在这里: 为什么我得到字符串不命名类型错误?
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 为什么我的for循环不能正确获取argv
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 为什么我不能在 FOR LOOP 中使用 i/10,C++?
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 为什么模板类中的对象不能返回值
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- ld:bind_at_load和-bitcode_bundle(Xcode设置ENABLE_bitcode=YES)不能
- 数组长度,为什么从命令行获取时不能使用它?
- Windows/Cygwin - 不能使用 pybind11 - 犯错误
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- 为什么我不能将 rand() 与数组的大小一起使用?
- 为什么虚函数不能是静态的和全局的?
- 为什么我不能在 while 循环中创建线程?
- 为什么这个音频包络不能通过开关的情况?
- C++ 使用 Visual Studio 2020 不能使用 .length()