如何将std :: string转换为C风格的字符串

use*_*793 1 c++ string cstring stdstring

我用C++编程.

这个问题基本上是我无法在任何地方找到答案.所以这是问题所在:

我想创建一个C风格的字符串,但我想将一个整数变量i放入字符串中.很自然地,我使用了一个流:

stringstream foo;
foo
                << "blah blah blah blah... i = " 
                << i
                << " blah blah... ";
Run Code Online (Sandbox Code Playgroud)

但是,我需要以某种方式获得一个C风格的字符串传递给一个函数(原来foo.str()返回一个std :: string).所以这在技术上是一个三部分问题 -

1)如何将std :: string转换为C风格的字符串?

2)有没有办法从字符串流中获取C风格的字符串?

3)有没有办法直接使用C风格的字符串(不使用字符串流)来构造一个带有整数变量的字符串?

K-b*_*llo 11

1)如何将std :: string转换为C风格的字符串?

只需拨打电话string.c_str()即可获得char const*.如果您需要一个可变的 _C-style_字符串,那么请复制一份.只要不调用任何非const函数,返回的C字符串就是有效的.string

2)有没有办法从字符串流中获取C风格的字符串?

简单来说就是这样strstream.str().c_str().返回的C字符串仅在包含它的表达式结束时才有效,这意味着将其用作函数参数是有效的,但不能存储在变量中以供以后访问.

3)有没有办法直接使用C风格的字符串(不使用字符串流)来构造一个带有整数变量的字符串?

C方式,使用方式sprintf等.