C 的字串讀取
scanf
以空行為分割進行讀取資料。
get
和 fgets
以\n
為分割讀取資料。讀取輸入直到遇到\n
或\0
才終止。
C++ 讀取字串
cin 以空格為分割讀取資料。getline 預設以換行符為分割讀取資料。在使用 getline 時,要注意處理 多個\n
連到一塊的情況。當讀取77\n\n77
時,第二次會讀到空行,可使用while(getchar()!='\n');
消除多餘的換行符。
另外getline
的第三個引數可以指定分割符,可根據需要使用。C++11 中 getline 的一個宣告:istream& getline (istream& is, string& str, char delim);
IO 同步問題
C++ iostream預設是和stdio同步的,這使得iostream的效能下降。在競賽題目的資料量大時於就會超時。可以透過關閉io同步解決這個問題,當然也可以使用 C 語言的 stdio,完全看個人喜好(建議只用一種)。
// 關閉 C++ io 同步
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
字串處理常用
s.c_str()
轉換為 c 風格字串(char *s)。
s.substr(pos, len)
返回 pos 位置開始,長度為len的子串,如果字元數不夠到結束為止。
s.find("string")
返回子字串的下標,返回型別為usinged
Hello World! 輸出
#include <bits/stdc++.h>
int main()
{
puts("Hello World!");
printf("Hello World!\n");
std::cout << "Hello World!" << std::endl;
}
執行結果:
Hello World!
Hello World!
Hello World!
參考資料:
-
https://cplusplus.com/reference/string/string/getline/
-
std::cin, std::wcin - cppreference.com