亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果我就是要改,而且不改變傳入參數的方式,該怎么辦?

如果我就是要改,而且不改變傳入參數的方式,該怎么辦?

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 關注
  • 177 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號