c ++ cout如何打印char *

时间:2018-04-04 09:31:57

标签: c++ pointers cout

在下面的代码中,函数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

1 个答案:

答案 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