Friday, April 28, 2006
[Programming] getline
- Question:透過cin擷取輸入的字串,諸如:"What the fuck",然後分別以strtok切出這三個Token,再取strlen值為多少。然後我就直接宣告一個buffer,然後用cin或scanf來處理,都發現了一個問題,就是,那個buffer都只存到"What"就停了,後面的"the fuck"被略過了。以前沒注意到這問題,後來搞懂之後,普通的cin或scanf並無法解決遇到某些特殊字元的狀況。
- Solution:透過 getline function 就可以輕易的解決問題
- Example 如下:(底下Colorful Source Code產生的方式是透過 http://phpfi.com/ 這個站產生出來的,頗不賴的。相關的站台如下(轉自PTT C_AND_CPP 版):
- http://paste.d22.cc/ (d2207197大的Nopaste網頁)
- http://nopa.csie.org/
- http://rafb.net/paste/ (中文支援可能會有問題)
- http://phpfi.com/
- http://nopaste.coders-net.de/index.php
#include <iostream>
#include <cstring>
using namespace std;
int main(int argc , char** argv)
{
char str[100];
cin.getline(str,100,'\n');
cout<<"str = "<<str<<endl;
char *token = strtok(str, " ");
cout <<"Length("<<token<<") = "<< strlen(token) << endl;
while((token = strtok(NULL, " ")) != NULL )
{
cout <<"Length("<<token<<") = "<< strlen(token) << endl;
}
}
0 Comments:
Plz Post a Comment / 拜託你留個言啦...^^"