3.1
用適當的using宣告,而不是std::字首,訪問標準庫中名字的方法,重新編寫2.3節的程式,計算一給定數的給定次冪的結果。
can not findor open the pdb file.
編譯出現問題
#include"stdafx.h"
#include
#include
usingstd::string;
usingstd::cin;
usingstd::cout;
usingstd::endl;
int_tmain(int argc, _tchar* argv)
if(exponent>0)
cout << base << " raised to the power of" << exponent << ":" << result << endl;
system("pause");
return 0; }
}3.2
什麼是預設建構函式?
答:每個類都定義了該型別物件如何進行初始化。類通過定義乙個或多個建構函式來控制類物件的初始化。如果定義某個類的變數時沒有進行提供初始化式,它會預設執行乙個「預設建構函式」,如果沒有提供初始化式,那麼它就會使用預設建構函式。不管變數在**定義,預設建構函式都會被使用。
3.3列舉出三種初始化string物件的方法。
答:string s1;預設建構函式,s1為空串
strings2(s1);
將s2初始化為s1的乙個副本
strings3(「value」);
將s3初始化為乙個字串字面值副本
3.4s
和s2的值分別是什麼?
strings;
intmain() s
為「 」
s2為 「 」
3.5編寫程式實現從標準輸入每次讀入一行文字。然後改寫程式,每次讀入乙個單詞。 答:
#include"stdafx.h"
#include
#include
usingstd::cin;
usingstd::cout;
usingstd::endl;
usingstd::string;
int_tmain(int argc, _tchar* argv)
//第二問
#include"stdafx.h"
#include
#include
usingstd::cin;
usingstd::cout;
usingstd::endl;
usingstd::string;
int_tmain(int argc, _tchar* argv)
3.6解釋string型別的輸入操作符和getline函式分別如何處理空白字元
string
型別的輸入操作符:
讀取並忽略開頭所有的空白字元(如空格,換行符和製表符)
讀取字元直至再次遇到空白字元,讀取終止。
3.7編寫程式讀入兩個string物件,測試它們是否相等。若不相等,則指出兩個較大,接著,改寫程式測試它們的長度是否相等,若不相等,則指出哪個較長。
// #include"stdafx.h"
#include
#include
usingstd::cin;
usingstd::cout;
usingstd::endl;
usingstd::string;
int_tmain(int argc, _tchar* argv)
\「轉義字元輸出」
3.8編寫乙個程式,從標準輸入讀取多個string物件,把它們連線起來存放到乙個更大的string物件中。並輸出連線後的string物件。
#include
#include
usingnamespace std;
intmain()
system("pause");
return 0; }
3.9
下列程式實現什麼功能?實現合法嗎
?如果不合法,說明理由。
string s
;cout<
答:不合法。
s是乙個空字串,其長度為
0,因此
s[0]
是無效的。
有改進空間
—— 3.10
編乙個程式,從
string
物件中去掉標點符號。要求輸入到程式的字串必須含有標點符號,輸出結果則是去掉標點符號的
string
物件。 //
#include"stdafx.h"
#include
#include
usingstd::cin;
usingstd::cout;
usingstd::endl;
usingstd::string;
int_tmain(int argc, _tchar* argv)
if (has_punct)
cout << "reslut:" <
else
system("pause");
return 0;
} 習題3.13
讀一組整數到
vector
物件,計算並輸出每對相鄰元素的和如果讀入元素個數為奇數,則提示使用者最後乙個元素沒有求和,並輸出其值。然後修改程式:頭尾元素兩兩配對,計算每對元素的和,並輸出。
code:
// #include "stdafx.h"
#include
#include
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
int _tmain(int argc, _tchar*argv)
//計算相鄰元素並輸出
if (ivec.size() == 0)
cout << "
在vector
物件中相鄰的每對元素之和
:"<< endl;
for (vector::size_type index = 0; index < ivec.size()- 2; index = index + 2)
if ((ivec.size()-1) % 2 != 0)//
提示輸出最後
1個元素沒有和
cout << endl;
cout << "
它的值是:
" <
system("pause");
return 0;}
//第二問
// #include"stdafx.h"
#include
#include
usingstd::cin;
usingstd::cout;
usingstd::endl;
usingstd::vector;
usingstd::string;
int_tmain(int argc, _tchar* argv)
if (ivec.size() == 0)
cout << "
計算vector物件中首尾元素之和" << endl;
vector::size_type cnt = 0;
for (vector::size_type first = 0,last = ivec.size() - 2; first < last; ++first, --last)
system("pause");
return 0; }
3.14
讀入一段文字到
vector
物件,每個單詞儲存為
vector
中的乙個元素。把
vector
物件中每個單詞轉化為大寫字母。輸出
vector
物件中轉化後的元素,每八個單詞為一行輸出。
#include "stdafx.h"
#include
#include
#include
#include
usingstd::cin;
usingstd::cout;
usingstd::endl;
usingstd::vector;
usingstd::string;
int_tmain(int argc, _tchar* argv)
//將vector物件中小寫字母化為大寫字母,並輸出
if(svec.size() == 0)
for (vector::size_type ix = 0;ix != svec.size()-1; ix++)
cout << svec[ix] << "";
if ((ix+1) % 8 == 0)
cout << endl; }
system("pause");
return 0;}
C primer第三章 標準庫型別
一 標準庫string型別 include 1 string物件的定義和初始化 表3.1幾種初始化string物件的方式 string s1 預設建構函式,s1為空串 string s2 s1 將s2初始化為s1的乙個副本 string s3 value 將s3初始化為乙個字串字面值的副本 stri...
C Primer 第三章 標準庫型別
c 定義了兩種最重要的標準庫型別 string 和 vector,它們分別定義了大小可變的字串和標準庫。其中,string型別支援長度可變的字串,vector可用於儲存一組指定類 型的物件。3.2標準庫string 型別 string型別支援長度可變的字串,使用者程式要使用string型別物件,必須...
《C Primer》 第三章 標準庫型別
除低階資料型別,c 標準庫還定義了許多更高階的抽象資料型別 abstract data type 比如string,vector,bitset。命名空間的using宣告 使用using宣告可以在不需要加字首namespace name 的情況下訪問命名空間中的名字。using namespace n...