輸出 We%20are%20happy #include using namespace std; #include //length是字符數(shù)組str的總?cè)萘?void ReplaceBlank(char *str, i..."/>
您好,登錄后才能下訂單哦!
舉個(gè)栗子:
We are happy-->輸出"We%20are%20happy"
#include <iostream>
using namespace std;
#include <cstddef>
//length是字符數(shù)組str的總?cè)萘?void ReplaceBlank(char *str, int length)
{
if (str == nullptr&&length <= 0)
{
return;
}
int count = 0;
int i = 0;
int oldLength = 0;//str數(shù)組中原有長(zhǎng)度
while (str[i] != '\0')
{
if (str[i++] == ' ')
++count;
++oldLength;
}
int newLength = oldLength + count * 2;//加完所有%20之后的長(zhǎng)度
int index1 = newLength;
int index2 = oldLength;
if (newLength>length)
return;
while (index1 >= 0 && index2<index1)
{
if (str[index2] == ' ')
{
str[index1--] = '0';
str[index1--] = '2';
str[index1--] = '%';
--index2;
}
else
{
str[index1--] = str[index2--];
}
}
}
int main()
{
char str[] = "";
cin.getline(str,100);//按行輸入
ReplaceBlank(str, 100);//100
int i = 0;
while (str[i] != '\0')
{
cout << str[i];
i++;
}
return 0;
}
注意:cin.getline(str,100);
- 第一個(gè)參數(shù)是字符指針
- 第二個(gè)參數(shù)是輸入數(shù)組最大長(zhǎng)度(’\0’會(huì)占據(jù)最后一位)
3.第三個(gè)參數(shù)是結(jié)束字符(不寫(xiě)默認(rèn)回車(chē)),結(jié)束符不會(huì)被輸入到數(shù)組中
數(shù)組名的值是個(gè)指針常量,也就是數(shù)組第一個(gè)元素的地址。a[300]是一個(gè)數(shù)組,a是一個(gè)指向a[0]
的指針,a+5 是一個(gè)指向a[4]的指針
cin.getline()坑點(diǎn)
1.輸入超過(guò)自己給getline()第二個(gè)參數(shù)設(shè)置的長(zhǎng)度,整個(gè)程序的輸入就終止了
2.cin.getline()讀到第二個(gè)參數(shù)的長(zhǎng)度或第三個(gè)參數(shù)符或者回車(chē)時(shí)結(jié)束輸入,丟棄結(jié)束符。
比如cin.getlin(a,5,’-’);遇到‘-’結(jié)束輸入,‘-’和‘\0’會(huì)被算進(jìn)第二個(gè)參數(shù)5的個(gè)數(shù)里面,但‘-’最終會(huì)被丟出字符串,(就像‘-’憑空消失了一樣,a中不會(huì)有,下一次的cin>>也不會(huì)讀入他,就像cin.getline(a,5);遇到回車(chē)默認(rèn)結(jié)束時(shí),回車(chē)被丟出字符串一樣);
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。