为了账号安全,请及时绑定邮箱和手机立即绑定

如果我就是要改,而且不改变传入参数的方式,该怎么办?

如果我就是要改,而且不改变传入参数的方式,该怎么办?

C++
繁星coding 2023-04-22 17:13:04
int GetRandomNum(char *p=NULL,bool Ran) { //前面省略.................... char*q=p; while(*q) { if(*q=='*') { *q='0'; } q++; } //后面省略................................................... } 然后我想在main函数里给它的第一个形参传入"13****",但是事实证明直接以这种形式传入的字符串是不允许修改的。我是想弄成类似printf函数的格式化字符串的形式。
查看完整描述

3 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

调用时如果是GetRandomNum(“13*****”,true);肯定是无法修改的,因为传入的是常量字符串,无法改变常量字符串中的任何字符。
但如果是char str[] = "13******"; GetRandomNum(str,true); 就没问题,因为传入的是字符数组,可以修改。

查看完整回答
反对 回复 2023-04-25
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

不能修改是因为"13****"是字符串常量,你要是想修改,你可以先把这个字符串常量存起来,然后在修改就行了。
void GetRandomNum(char *p=NULL,bool Ran = 0) 
{
char a[1024] = {0};//大小你可以自己定义
memcpy(a,p,strlen(p));
a[0] = 'a';
}

查看完整回答
反对 回复 2023-04-25
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>。如下:
#include <string> //注意这里不是string.h string.h是C字符串头文件
1.声明一个C++字符串
声明一个字符串变量很简单:
string Str;
这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str初始化为一个空字符串。String类的构造函数和析构函数如下:
a) string s; //生成一个空字符串s
b) string s(str) //拷贝构造函数 生成str的复制品
c) string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值
d) string s(str,stridx,strlen) //将字符串str内“始于stridx且长度顶多strlen”的部分作为字符串的初值
e) string s(cstr) //将C字符串作为s的初值
f) string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。
g) string s(num,c) //生成一个字符串,包含num个c字符
h) string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值
i) s.~string() //销毁所有字符,释放内存
都很简单,我就不解释了。
2.字符串操作函数
这里是C++字符串的重点,我先把各种操作函数罗列出来,不喜欢把所有函数都看完的人可以在这里找自己喜欢的函数,再到后面看他的详细解释。
a) =,assign() //赋以新值
b) swap() //交换两个字符串的内容
c) +=,append(),push_back() //在尾部添加字符
d) insert() //插入字符
e) erase() //删除字符
f) clear() //删除全部字符
g) replace() //替换字符
h) + //串联字符串
i) ==,!=,<,<=,>,>=,compare() //比较字符串
j) size(),length() //返回字符数量
k) max_size() //返回字符的可能最大个数
l) empty() //判断字符串是否为空
m) capacity() //返回重新分配之前的字符容量
n) reserve() //保留一定量内存以容纳一定数量的字符
o) [ ], at() //存取单一字符
p) >>,getline() //从stream读取某值
q) << //将谋值写入stream
r) copy() //将某值赋值为一个C_string
s) c_str() //将内容以C_string返回
t) data() //将内容以字符数组形式返回
u) substr() //返回某个子字符串
v)查找函数
w)begin() end() //提供类似STL的迭代器支持
x) rbegin() rend() //逆向迭代器
y) get_allocator() //返回配置器

查看完整回答
反对 回复 2023-04-25
  • 3 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信