熟悉stl中常用的string
,map
等資料結構的使用
對於string
物件,可以直接使用=
實現深拷貝,同時對於string
還有以下幾個需要熟悉的函式
str.
size()
;//求字串的大小
str1 = str1 +
"a";
//直接拼接字串
str.
insert
(index, str1)
;//在index的位置插入字串str1
str.
insert
(index, count, s)
;//在index的位置插入cout個字元s
str.
erase
(index, cout)
;//從index位置開始刪除cout個字元
str.
find
(str1, startpos)
;//從startpos位置開始查詢字串str1,若找到則返回第一次出現的下標,若不能找到,則返回string::npos
stl中map模板的使用
mapint> mp;
//初始化
mp.clear()
;//清空map
mp.find
(b);
//查詢mp中使用有b的對映,如果有的話返回對應的迭代器,如果沒有的話返回mp.end()
mp.cout
(b);
//查詢元素b,是否存在,有0,1兩個值
未找到提交oj
題目描述
給定乙個短字串(不含空格),再給定若干字串,在這些字串中刪除所含有的短字串
輸入描述
輸入只有1組資料。
輸入乙個短字串(不含空格),再輸入若干字串直到檔案結束為止。
輸出描述:
刪除輸入的短字串(不區分大小寫)並去掉空格,輸出
示例1
輸入:
in
#include
intmain()
輸出:
#clude
tma(
)
解題思路
本題主要有兩個難點,第乙個是資料的讀入,可知本題中輸入資料是一行一行讀入的,可以使用getline(cin, str)
,或者gets(str)
,第乙個函式是c++中的,第二個函式是c中的(str必須是字元指標)
第二個難點就是要忽略大小寫,這一點就使得不能直接使用string
中的find
函式來進行查詢。我的解決思路就是直接回歸最原始方法,乙個乙個遍歷字元來查詢字串,同時在查詢到之後對字串進行刪除。**如下:
#include
#include
#include
#define max 1000
using namespace std;
//判斷是否到檔案結尾
intmain()
i++; j++;}
if(tar[i]
!= str[j]
&&'a'
+(tar[i]
-'a'
)!= str[j]
&&'a'
+(tar[i]
-'a'
)== str[j]
) i--
; j =0;
} s2 = tar.
size()
;for
(i=0
; i) cout<}return0;
}
其他思路
需要總結的一些知識點
提交oj
題目描述
輸入乙個字串,以回車結束(字串長度<=100)。該字串由若干個單詞組成,單詞之間用乙個空格隔開,所有單詞區分大小寫。現需要將其中的某個單詞替換成另乙個單詞,並輸出替換之後的字串。
輸入描述
多組資料。每組資料輸入包括3行, 第1行是包含多個單詞的字串 s, 第2行是待替換的單詞
a,(長度<=
100) 第3行是a將被替換的單詞b。(長度<=
100) s, a, b 最前面和最後面都沒有
空格.
輸出描述:
每個測試資料輸出只有 1 行, 將s中所有單詞a替換成b之後的字串。
示例1
輸入:
you want someone to help you
youi
輸出:
i want someone to help you
解題思路
本題我是直接使用string
類中的erase
和find
函式來解決的,解題過程中碰到兩個坑點
需要注意題目中是將乙個單詞替換為另乙個單詞,同時單詞和單詞之間有空格分隔,這就意味著當ccc是cc的字首表示式時不能被替換
string
類中find
函式返回值的問題,string
中find
函式在沒有找到目標時返回的是string::npos
,要注意的是,這個數的型別是string::size_type
,不能使用unsigned int
或者int
來存,要不然就會出錯。我一開始使用unsigned int
來儲存,在本題測試沒問題,但是提交到oj上之後就一直報陣列越界,就是由於當使用unsigned int
儲存時會使t != string::npos
失效。
#include
#include
#include
using namespace std;
//發生越界錯誤
intmain()
str.
erase(0
,1);
str.
erase
(str.
size()
-1,1
);cout<}return0;
}
其他思路
需要總結的一些知識點
//1,使用string::size_type型別來儲存,然後在判斷
string:
:size_type t = str.
find
(a);
while
(t != string:
:npos)
//2,在判斷是否為string::npos之後再使用int儲存
while
(str.
find
(a)!= string:
:npos)
第八章上課練習
向student表中插入資料 語法 insert into 表名 列名 values 值列表 insert into student studentno,loginpwd,studentname,gradeid,phone,address,borndate,email values s1304002...
第八章 指標 第八章 指標
1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...
第八章 8 1 2節練習
決定開博寫文的時候,我已經看到第8章了。這裡,從第8章開始。當然之前的章節,會在後面補上。分界線 題目 練習8.1 編寫函式,接受乙個istream 引數,返回值型別也是istream 此函式須從給定流中讀取資料,直至遇到檔案結束標識時停止。將讀取的資料列印在標準輸出上。完成這些後,在返回留之前。對...