c++ 如何打印另一种类型变量的 String 属性的值?

Nob*_*fer 6 c++ string

String我想在控制台中显示 C++ 的值 -但该特定值String不是独立定义的 - 它是另一种类型变量的属性...我当前尝试用来显示其值的行是:

printf("\n CSARSixSectorItem.cpp line 530. rm_WPSequence[liSARIndex -1]: %s", rm_WPSequence[liSARIndex-1].rm_RefPointDB->m_Name);
Run Code Online (Sandbox Code Playgroud)

在引号之外,我将变量:传递rm_WPSequence[liSARIndex-1].rm_RefPointDB->m_Name给.%sprintf

m_Name是 String 类型的变量,定义为:

std::string m_Name;
Run Code Online (Sandbox Code Playgroud)

rm_RefPointDB是一个指向 a 的指针CGenericRefPoint,定义为:

CGenericRefPoint * rm_RefPointDB;
Run Code Online (Sandbox Code Playgroud)

rm_WPSequence 的vector定义如下:

vector< CUserWaypointListElement > rm_WPSequence;
Run Code Online (Sandbox Code Playgroud)

但是,虽然我尝试显示的实际变量是 a string,但当在控制台中打印该行时,我没有给出字符串的内容,而是给出一些不可读的字符,例如L,%...显示的字符每次都会改变该行被打印。我想知道这是否是因为它String是另一个变量的成员?如果是这样,我怎样才能显示字符串的值?我真的不想知道有关其父变量的任何信息,但是我还需要做其他事情才能单独访问字符串吗?

Mic*_*CMS 5

使用 std 字符串的 c_str() 函数传递给 %s :

printf("\n CSARSixSectorItem.cpp line 530. rm_WPSequence[liSARIndex -1]: %s", rm_WPSequence[liSARIndex-1].rm_RefPointDB->m_Name.c_str());
Run Code Online (Sandbox Code Playgroud)

解释:%s 期望显示 char* 类型。您正在传递一个 std::string ,它是 Class Type 。

c_str() 返回一个指向 std::string 包含的 char* 缓冲区的指针。

  • 它返回 **const** `char*` 指针,而不是 `char*`。该指针应被视为只读,因为修改它不会更新字符串的内部状态。 (2认同)