我想将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返回的值必须相同。
请问任何想法?
非常感谢。答案 0 :(得分:2)
字符串可以更改其内部缓冲区,因此即使您可以创建使用特定缓冲区的字符串,在常见突变之后,它也可能具有不同的后备缓冲区。
例如,它可以根据string::reserve(...)
调用重新分配缓冲区。
返回的指针指向字符串对象当前使用的内部数组,以存储符合其值的字符。
string::data
和string::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 *。
此致