在下面的代码中,函数getName()
返回char *
。我认为它应该(它也可以)返回string
。如果cout
只是指向第一个char的指针,那么#include <iostream>
#include <string>
using namespace std;
class Base
{
protected:
int m_value;
public:
Base(int value)
: m_value(value)
{
}
const char* getName() { return "Base"; }
//string getName() { return "Base"; }
int getValue() { return m_value; }
};
int main()
{
Base base(5);
std::cout << "Base is a " << base.getName() << " and has value " << base.getValue() << '\n';
return 0;
}
如何正确地将它打印到控制台?
str
答案 0 :(得分:2)
cout
和朋友认为char *
类型为C-string。
如果您希望打印由指针引用的单个字符,则必须先dereference,因此cout
会获得char
类型。或者,由于C字符串是字符数组,您可以使用其0 th 项。
const char* myString = "Hello";
cout << "string: " << myString << endl
<< "*string: " << *myString << endl
<< "string[0]: " << myString[0] << endl;
给出(check it online):
string: Hello
*string: H
string[0]: H