无法将Char数组转换为字符串

时间:2016-05-18 02:13:01

标签: c++

我试图获取当前日期并将其存储在String中,但是当我尝试从char数组保存到String时,我收到以下错误;

Error: Call of an object of a class type without appropriate operator() or conversion functions to pointer-to-function type in [file].

然而,据我所知,根据C ++参考资料,我仍然难以理解为什么它不起作用,因为函数应该按照使用的方式工作。代码如下。

#include <string>

...

std::string dummyString;
time_t tempTime;
struct tm * timeInfo;
char buffer [40];

tempTime = recordInstance->getTime();
timeInfo = localtime (&tempTime);

strftime (buffer, 80,"%d/%b/%Y",timeInfo);
dummyString(buffer); //Error returned on this line.

4 个答案:

答案 0 :(得分:2)

你显然打算写

dummyString=buffer;

而不是显示代码中的最后一行。

答案 1 :(得分:2)

在再次查看你的问题后,我应该提及其他一些内容,因为它可能与此相关。构造函数是特殊的未命名成员函数,不能像其他函数一样直接调用。它们仅在首次构造对象时调用,并且不能再次调用。如果这是你的意图,你现在可以更好地了解为什么它不会起作用。

<小时/> 您得到的错误是因为您的代码试图调用dummyString,就像它是一个函数一样。尽管C ++ 支持执行此操作的能力,但string的定义却没有(没有理由 - 它不是函数类型对象)。根据您的帖子,看起来您正在尝试在定义dummyString之后构建它。将变量定义为尽可能接近首次使用,这绝对被认为是一种很好的做法,但这不是如何做到的。

定义变量时,它会以某种方式初始化。在这种情况下,以下语句会导致std::string上的dummyString的默认构造函数被调用。

std::string dummyString;

您要做的是使用字符缓冲区的内容构造dummyString。为此,您需要在实例化时将字符串作为参数传递,在本例中是定义变量的时间。

std::string dummyString(buffer);

这将使用缓冲区的内容构造字符串。

答案 2 :(得分:0)

问题可能是语法:

dummyString(Char *)是一个构造函数 - 但看起来你已经在某处声明了dummyString?

尝试将dummyString声明为...... string dummyString(buffer);

或者如果必须已经声明,请尝试...

dummyString = buffer;

答案 3 :(得分:0)

你打算做什么

dummyString = std::string(buffer);

dummyString = buffer;

因为您使用的语法仅在声明时允许

std::string dummyString(buffer);