我的代码如下:
string s = "abc";
char* pc = const_cast<char*>( s.c_str() );
pc[ 1 ] = 'x';
cout << s << endl;
当我使用GCC编译上面的代码片段时,我得到了预期的结果"axc"。我的问题是,这种修改C ++字符串的底层char
数组的方式是否安全且可移植?或者可能有其他方法直接操作字符串的数据吗?
顺便说一下,我的意图是编写一些纯C函数,可以同时被C和C ++调用,因此它们只能接受char*
作为参数。从char*
转换为字符串,我知道会涉及复制,代价不利。那么,有人能给出一些处理这种情况的建议吗?