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

时间:2014-08-09 13:18:36

标签: c++

所以我定义了这个:

static  char    randomstring[128];

现在每当我在某处提到它时都会这样:

char *x = randomstring;

一切正常,但每当我尝试对其内容做一些事情时:

char *x = ranomstring.front();

它根本不起作用,并且表达式必须具有类类型.. 这个问题对我来说很多。 我还应该提一下我在c​​ ++的总菜鸟。

3 个答案:

答案 0 :(得分:1)

您应该了解std::string(一个类)和c-style stringchar*char[] - 数组)之间的区别。

//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

答案 1 :(得分:0)

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

例如

#include <string>

//...

std::string randomstring;

//filling the string

char x = randomstring.front();

答案 2 :(得分:0)

更改char * x = ranomstring.front(); to char * x =((string)ranomstring).front();