为什么c_str()会打印两次字符串?

Ale*_*lex -1 c++ c-strings

所以...当我去的时候:

cout<<stringName<<endl;
Run Code Online (Sandbox Code Playgroud)

我明白了:

NT
Run Code Online (Sandbox Code Playgroud)

但是当我走的时候:

cout<<stringName.c_str()<<endl;
Run Code Online (Sandbox Code Playgroud)

我明白了:

NTNT
Run Code Online (Sandbox Code Playgroud)

为什么?

Kev*_*ney 9

使用以下代码进行快速测试:

#include <string>
#include <iostream>

using namespace std;

int main(void) {
    string str = "NT";
    cout << str.c_str() << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

生成NT的一个实例,所以看起来你可能在某个地方有另一个输出调用.