表达式必须有类类型错误c++

expression must have class type error c++

本文关键字:类型 错误 c++ 表达式      更新时间:2023-10-16

我已经定义了这个:

static  char    randomstring[128];

现在每当我在这样的地方提到它:

char *x = randomstring;

它运行良好,但每当我试图对其内容做一些事情时:

char *x = ranomstring.front();

它根本不起作用,并且说表达式必须具有类类型。这个问题经常发生在我身上。

您应该了解std::string(一个类)和c风格字符串(char*char[] - array)之间的区别。

//this calls std::string constructor to convert c-style string to std::string:
string mystring = "hello world!";
//std::string has front()
char* front = mystring.front();
//this is old-style string
char oldstring[] = "hello again!";
//you can access it as pointer, not as class
char* first = oldstring;
//but you can iterate both
for(char c : mystring) cout << c;
for(char c : oldstring) cout << c;
//...because it uses std::begin which is specialized for arrays

c++中的数组不是类。它们是聚合体。所以他们没有办法。请使用标准容器std::string或标准容器std::vector,它们可以动态改变大小,并具有front方法。

例如

#include <string>
//...
std::string randomstring;
//filling the string
char x = randomstring.front();

改变char *x = ranomstring.front();char * x =((字符串)ranomstring) .front ();