string類

2019-11-22

18:08:06

構造字符串

#include<iostream>
#include<string>
using namespace std;
int main()
{
    using namespace std;
    string one("My name is String!");//初始化,C-風格
    cout << one << endl;//使用重載<<運算符顯示
    string two(20, '$');//初始化爲由20個字符組成的字符串
    cout << two << endl;
    string three(one);//複製構造函數將string對象three初始化爲one
    cout << three << endl;
    one += "I love wly.";//附加字符串
    cout << one << endl;
    two = "Sorry!"; 
    three[0] = 'p';//使用數組表示法訪問
    string four;
    four = two + three;
    cout << four << endl;
    char alls[] = "All's well that ends well.";
    string five(alls, 20);//只使用前20個字符
    cout << five << "!\n";
    string six(alls + 6, alls + 10);
    cout << six << endl;
    string seven(&five[6], &five[10]);
    cout << seven << endl;
    string eight(four, 7, 16);
    cout << eight << endl;
    return 0;
}

 

程序說明:ios

  •  重載的+=運算符將字符串S1附加到string對象的後面。
  •  =運算符也能夠被重載,以便將string對象,C-風格字符串或char賦值給string對象。

S=」asdfg」;數組

S1=S2函數

S=’?’;spa

  • string six(alls + 6, alls + 10);

數組名至關於指針,因此alls+6和alls+10的類型都是char *。指針

若要用其初始化另外一個string對象的一部份內容,則string s(s1+6,str+10);無論用。code

緣由在於,對象名不一樣與數組名不會被看做是對象的地址,所以s1不是指針。然而,對象

S1[6]是一個char值,因此&s1[6]是一個地址。blog

故能夠寫爲:string seven(&five[6], &five[10]);three

  • 將一個string對象的部份內容複製到構造的對象中。

string eight(four, 7, 16);ci

string類輸入

對於C-風格字符串:

char info[100];

  1. cin >> info;//read a wrd
  2. cin.getline(info,100);//read a line,discard \n
  3. cin.get(info,100);// read a line,leave \n in queue
#include<iostream>
#include<string>
using namespace std;
void Print(char s[])
{
    int i;
    for (i = 0; s[i] != '\0'; i++)
        cout << s[i];
    cout << endl;
    cout << "字符串長: " << i << endl;
}
int main()
{
    char info[100];
    cin >> info;
    Print(info);
    cin.get();
    cin.getline(info, 100);
    Print(info);
    cin.get(info, 100);
    Print(info);
    return 0;
}

 

 

對於string對象:

string stuff;

cin >> stuff; //read a word

getline(cin,stuff); //read a line,discard \n

兩個版本的getline()都有一個可選參數,用於指定使用哪一個字符來肯定輸入邊界

cin.getline(info,100,‘:’);

getline(stuff,’:’);

區別:string版本的getline()將自動調整目標string對象的大小,使之恰好可以存儲輸入的字符:

char fname[10];

string fname;

cin >> fname;//could be a problem if input size > 9 characters

cin >> lname;//can read a very,very long word

cin.getline(fname,10);

cetline(cin,fname);

自動調整大小的功能讓string版本的getline()不須要指定讀取打多少個字符的數值參數。

相關文章
相關標籤/搜索