将char *绑定到字符串

时间:2015-03-19 14:58:51

标签: c++ string bind c-strings

我想将char绑定到字符串,但我不知道该怎么做: 我的想法是,我有一个函数 void f(char mychar)* ,用于更新 mychar 的值。我想将此更新传递给字符串。

代码必须如下:

char* mychar = new char[128];

string mystring;

\\bind mystring with mychar
.....

f(mychar);

std::cout << mychar << std::endl ;
std::cout << mystring << std::endl

并且mychar和mystring返回的值必须相同。

请问任何想法?

非常感谢。

3 个答案:

答案 0 :(得分:2)

字符串可以更改其内部缓冲区,因此即使您可以创建使用特定缓冲区的字符串,在常见突变之后,它也可能具有不同的后备缓冲区。

例如,它可以根据string::reserve(...)调用重新分配缓冲区。

string::c_str

  

返回的指针指向字符串对象当前使用的内部数组,以存储符合其值的字符。

     

string::datastring::c_str都是同义词并返回相同的值。

     

对于修改对象的其他成员函数,返回的指针可能会被进一步调用无效。

并且C ++ 98的注释有此警告

  

程序不得改变此序列中的任何字符。

您似乎希望f(mychar)做。

答案 1 :(得分:0)

您需要先初始化mychar。其余的很简单:

char* mychar = new char[128];
mychar[0] = 'A';
mychar[1] = '\0';
std::string mystring(mychar);

std::cout << mychar << std::endl;
std::cout << mystring << std::endl;

编辑:但我刚刚意识到这并没有回答你的问题,这段代码只对初始化有帮助。请参阅@ Mike的答案。

答案 2 :(得分:-1)

我是否认为你只是希望两个变量引用相同的字符串? 如果这应该有效:

string mystring;
char* mychar = mystring.data();

data方法返回一个指向字符串数据的指针,该字符串数据只是字符的起始地址 - &gt;一个char *。

此致