Independent Dog

My EDA life record

Standard Input in CPE


Perface

寫了一個上午的Parser,決定換個心情寫個網誌,順便把自己會用到的CPE基本輸入做一下整理。

Table

  1. cin
  2. cin.getline()
  3. getchar()
  4. getline()
  5. String sample introduction


1. cin

最基本的輸入法,會省略空白跟換行等跳脫字元。

Example:

Data Input:
1 2 3


Porgram

1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
int main()
{
int n;
while(cin >> n)
cout << n <<endl;
}

Output:
1
2
3
4

2. cin.getline()

Reference 中是這麼寫的

istream& getline (char* s, streamsize n, char delim );

第一個參數 *s 是用來接字元指標的, 第二個 n 則是確認指標陣列長短

第三個delim則是對每一行斷點的定義,預設是 ‘\n’ 也就是換行

Example:

Data Input:
1 2 3
4 5 6 7 8 abc
GgiNinDer

Porgram

1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
int main()
{
char c[100];
while(cin.getline(c,100))
cout << c <<endl;
}

Output:
1 2 3
4 5 6 7 8 abc
GgiNinDer

如果我們在最後一個參數填入’i’則會在讀到i時停止。

Output:
1 2 3
4 5 6 7 8 abc
Gg
N
nDer

3. getchar()

我只有在cin 和其他輸入混合使用時會用到,主要應用在把cin沒有吃掉但會影響getline的’\n’吃掉。
可以參考:“How to use StringStream(sstream) in C++ STL (UVA:482)”中程式碼第13行和15行,此處不再贅述。

4. getline()

並不是iostream裡面的東西,使用時要include string。

Example:

Data Input:
1 2 3
4 5 6 7 8 abc
GgiNinDer

Porgram

1
2
3
4
5
6
7
8
9
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
while(getline(cin,s))
cout << s <<endl;
}

Output:
1 2 3
4 5 6 7 8 abc
GgiNinDer

5. String sample introduction

重點在這裡XD

主要是把早上寫的Parser裡用到做法整理一下。

不過大部分還是從 Cplusplus 搬運的就是了~











Function NameIntroduce
operator+Concatenate strings
operator[]Get character of string
sizeReturn length of string
beginReturn iterator to beginning
endReturn iterator to end
c_strGet C string equivalent
findFind content in string
substrGenerate substring

Explain:

Reference

cplusplu.com

⬅️ Go back