1. 程式人生 > >c++的字符串

c++的字符串

空格 can rep class 目前 puts c++ 針對 方法

字符串不是太難,但特別多細節,一不註意就會錯qaq

到現在為止都沒打完。。。

但還是先寫了。。。(先聲明,本人Pascal轉c++,打程序時總少不了尷尬。。。)

1。輸入輸出

輸入:

1)scanf:(可讀入多個字符串)

如scanf("%s%s%s",&s1,&s2,&s3)到空格就換一個

一定要加&,不然會錯,吃了好多次虧%>_<%

2)gets(只能讀一個字符串,好處是可以一下讀一行,很好用。。)

輸出:

1)printf:

只輸出字符串,不輸出單個字符,(和pascal差挺遠)

2)puts(字符串和換行符,直接換行,很棒。。)

當然輸入還有一種很作弊的方法:

看下題:

一個句子中也許有多個連續空格,過濾掉多余的空格,只留下一個空格。

Input

一行,一個字符串(長度不超過200),句子的頭和尾都沒有空格。

Output

過濾之後的句子。

Sample Input

Hello      world.This is    c language.

Sample Output

Hello world.This is c language.

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main()
{
    
string s; while (cin>>s) cout<<s<< ; }

迷之方法。。。

2。一些字符串處理函數(單個字符串處理下面說)

左函數格式,右函數功能

strupr(字符串名) 將字符串中小寫字母換成大寫字母
strcat(字符串名1,字符串名2) 將字符串2連接到字符串1後邊,返回字符串1的值。
strncat(字符串名1,字符串名2,長度n) 將字符串2前n個字符連接到字符串1後邊,返回字符串1的值。
strcpy(字符串名1,字符串名2)
將字符串2復制到字符串1後邊,返回字符串1的值。
strncpy(字符串名1,字符串名2,長度n) 將字符串2前n個字符復制到字符串1後邊,返回字符串1的值。
strcmp(字符串名1,字符串名2) 比較字符串1和字符串2的大小,比較的結果由函數帶回; 如果字符串1>字符串2,返回一個正整數; 如果字符串1=字符串2,返回0; 如果字符串1<字符串2,返回一個負整數;
strncmp(字符串名1,字符串名2,長度n) 比較字符串1和字符串2的前n個字符進行比較,函數返回值的情況同strcmp
strlen(字符串名) 計算字符串的長度,終止符’\0’不算在長度之內
strlwr(字符串名) 將字符串中大寫字母換成小寫字母

目前沒怎麽用到,但以後難題還是挺有用的。。。(難題就是一個個小模板混在一起。。)

3.insert() //插入字符

erase() //刪除字符

clear() //刪除全部字符
replace() //替換字符

(這些天常用的)

4。說一說打字符串面臨的問題

1)超級麻煩的字符串讀入(但後來發現的puts和gets好用到爆炸。。)

還有一種很巧妙的方法

char a;
    string s="";
    while ((scanf("%c",&a)==1)&&(a!=\n)) 
    {
       s+=a;
    }

雖然很蠢,還是可以用的。。。

2)一個小細節:字符串的都是從0開始截取字符,如果不註意,超容易錯。。。

3)針對單個字符串,有很多方法完成程序

但前面一定要加s.(s為簡單的字符串)

練字符串的特別感悟:

當你的程序出問題運行不到時,

1.想想你的數組是不是開大了(不要問我為什麽)

2.想想用scanf有沒有加&(錯最多)

3.想想你的字符能不能換行(不能的話改)

4.你的字符最好從0輸入

c++的字符串