2012-06-23 60 views
0

是否有可能只讀取給定輸入行中的字母數字字符而忽略C/C++中的所有其他字符?我試圖一次讀全行。在C++中讀取行時過濾非字母數字字符?

假設我們要讀行:

aaa, bbb, ccc . 

在這裏,我的本意是忽略逗號,句號和空間,同時考慮輸入。

回答

4

您可以通過幾種方式做到這一點,例如最簡單的就是讀取整個行,然後刪除不希望以後的位:

#include <algorithm> 
#include <iostream> 
#include <string> 
#include <functional> 
#include <ctype.h> 

int main() { 
    std::string line; 
    while (std::getline(std::cin, line)) { 
    line.erase(std::remove_if(line.begin(), line.end(), std::not1(std::ptr_fun(isalnum))), line.end()); 
    std::cout << line << "\n"; 
    } 
} 

讀一行,然後刪除其爲isalnum返回false任何字符。 (在C++ 11中,你可以稍微簡化一下)

+0

這就是我正在嘗試做的,但我無法得到它的工作:p – chris

-2

您可以編寫一個字符串數組,並使用逗號,點和空格作爲字符串分隔符。將每個字符串存儲在數組中然後輸出。

aaa, bbb, ccc . 

aaa will be stored in string[0] 
bbb will be stored in string[1] 
ccc will be stored in string[2] 

然後只輸出通過琴絃for循環,你會得到

爲aabbcc

+0

除了comman,dot和space之外,我必須忽略所有非字母數字字符。 – sushil