6.1 C++ string類型變量的定義以及輸入與輸出


參考:http://www.weixueyuan.net/view/6389.html

總結:

  在C++中提供了一個型的內建數據類型string,該數據類型可以替代C語言中char數組。

  與C風格的char型數組不同,string類型的變量結尾是沒有 ’\0’ 的。

  我們可以通過s變量來調用length函數,從而返回s變量的長度。

  轉換函數c_str,該函數將string類型的變量轉換為一個const的字符串數組的指針。

  在C++中,在輸入輸出方面,我們可以像對待普通變量那樣對待string類型變量,其輸入輸出仍然可以用輸入輸出操作符進行處理。

  輸入操作符是默認忽略空格的,當遇到空格時就開始存儲字符串。

   

在C++中提供了一個型的內建數據類型string,該數據類型可以替代C語言中char數組。需要使用string數據類型時則需要在程序中 包含頭文件string。string類型處理起來會比較方便,下面我們將逐一介紹該類型的功能。

例1:
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s1;
    string s2 = "string";
    string s3 = s2;
    string s4 (10, 's');
    return 0;
}

 

在本例中介紹了幾種定義string類型變量的方法,變量s1只是定義但是沒有進行初始化,系統會將默認值賦給s1,默認值是“”(空字符串)。變量s2在定義的時候就被初始化為了"string", 與C風格的char型數組不同,string類型的變量結尾是沒有 ’\0’ 的,string類型的本質是一個string類,而我們定義的變量則是一個個的string類的對象。變量s3在定義的時候直接用s2進行初始化了,因此s3的內容也是"string"。變量s4初始化為10個‘s’字符組成的字符串,也即“ssssssssss”。

從例1中我們也可以看出string類型變量可以直接通過賦值操作符“=”進行賦值。 string類型變量可以用string類型變量或C風格字符串進行賦值。如s2則是用一個字符串常量進行初始化的,而s3變量則是通過s2變量進行初始化。

與C風格的字符數組不同,當我們需要知道字符串長度時,string類為我們提供了length函數。如下面例2所示,我們可以通過s變量來調用length函數,從而返回s變量的長度。因為string類型的變量末尾是沒有 ’\0’ 字符的,因此其返回值就是變量的真實長度,而不是長度+1。

例2:
string s = "string";
int len = s.length();

 

轉換為 char 數組字符串

雖然C++提供了string類型來替代C語言中的字符數組形式的字符串,但是我們在程序設計過程中還是不可避免地會碰到需要用字符數組形式字符串的地方。為此,系統為我們提供了一個轉換函數c_str,該函數將string類型的變量轉換為一個const的字符串數組的指針。

例1:
string filename = "input.txt";
ifstream in;
in.open(filename.c_str());

 

在本例中我們為了打開文件的函數open,因此必須將string類型變量轉換為字符串指針。
 

C++ string類型變量的輸入與輸出

既然新增string類型變量,則不可避免的需要涉及到string類型變量的輸入與輸出操作。 在C++中,在輸入輸出方面,我們可以像對待普通變量那樣對待string類型變量,其輸入輸出仍然可以用輸入輸出操作符進行處理。

例1:
#include <iostream>
#include <string>

using namespace std;

int main()
{
    string s;
    cin>>s;
    cout<<s<<endl;
    return 0;
}

 

如本例所示,輸入一個字符串,然后再將輸入的字符串輸出。運行程序結果如下:
string string↙
string

這個例子的運行結果輸出只是一個string,而我們輸入的是兩個string,並且中間用空格隔開了。其實問題就出現在空格上 ,輸入操作符是默認忽略空格的,當遇到空格時就開始存儲字符串。因此后面一個輸入的string沒有被存儲進去。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM