我用C ++编程。
基本上这个问题我似乎无法在任何地方找到答案。所以这就是问题所在:
我想创建一个C风格的字符串,但是我想将一个整数变量i放入字符串中。很自然地,我使用了一个流:
stringstream foo;
foo
<< "blah blah blah blah... i = "
<< i
<< " blah blah... ";
但是,我需要以某种方式获得一个C风格的字符串传递给一个函数(原来foo.str()返回一个std :: string)。所以这在技术上是一个三部分问题 -
1)如何将std :: string转换为C风格的字符串?
2)有没有办法从字符串流中获取C风格的字符串?
3)有没有办法直接使用C风格的字符串(不使用stringstreams)来构造一个包含整数变量的字符串?
答案 0 :(得分:11)
1)如何将std :: string转换为C风格的字符串?
只需致电string.c_str()
即可获得char const*
。如果您需要可变 _C-style_字符串,请复制。只要您不调用string
的任何非const 函数,返回的 C字符串就会有效。
2)有没有办法从字符串流中获取C风格的字符串?
只有strstream.str().c_str()
。返回的 C字符串只有在包含它的表达式结束时才有效,这意味着将其用作函数参数是有效的,但不能存储在变量中以供以后访问。 / p>
3)有没有办法直接使用C风格的字符串(不使用stringstreams)来构造一个包含整数变量的字符串?
C way ,使用sprintf
等。
答案 1 :(得分:3)
你到了一半。您需要foo.str().c_str();
your_string.c-str()
- 但这并没有真正转换,它只是给你一个指向缓冲区的指针(暂时)保存与字符串相同的内容。foo.str().c_str()
。答案 2 :(得分:-1)
这很简单
#include <afx.h>
std::string s("Hello");
CString cs(s.c_str());
没有
你可以使用sprintf格式化c风格的字符串