3 回答

TA貢獻1796條經驗 獲得超7個贊
調用時如果是GetRandomNum(“13*****”,true);肯定是無法修改的,因為傳入的是常量字符串,無法改變常量字符串中的任何字符。
但如果是char str[] = "13******"; GetRandomNum(str,true); 就沒問題,因為傳入的是字符數組,可以修改。

TA貢獻1844條經驗 獲得超8個贊
不能修改是因為"13****"是字符串常量,你要是想修改,你可以先把這個字符串常量存起來,然后在修改就行了。
void GetRandomNum(char *p=NULL,bool Ran = 0)
{
char a[1024] = {0};//大小你可以自己定義
memcpy(a,p,strlen(p));
a[0] = 'a';
}

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() //返回配置器
- 3 回答
- 0 關注
- 177 瀏覽
添加回答
舉報