2009-11-05 62 views
0

我正在閱讀包含帶有標點符號的單詞的文本文件,並且希望將該單詞讀入沒有標點符號的字符串。如何將單詞讀入忽略某個字符的字符串

例如,一個字可能是「你好,」

我想字符串得到「你好」(不帶逗號)。我怎樣才能在C++中使用ifstream庫來做到這一點。 我可以使用忽略功能忽略最後一個字符嗎?

預先感謝您。

回答

1

如果你只想忽略,那麼你可以使用getline

const int MAX_LEN = 128; 
ifstream file("data.txt"); 
char buffer[MAX_LEN]; 

while(file.getline(buffer,MAX_LEN,',')) 
{ 
    cout<<buffer; 
} 

編輯:這使用std::string,並摒棄了MAX_LEN

ifstream file("data.txt"); 
string string_buffer;  
while(getline(file,string_buffer,',')) 
{ 
    cout<<string_buffer; 
} 
+0

這就像一個魅力,唯一的問題是,我想將字存儲到一個字符串。我怎樣才能做到這一點? – 2009-11-05 05:45:30

+0

字符串與'std :: string'一樣嗎? – Jacob 2009-11-05 05:50:04

+0

我這麼認爲。我只是想將它存儲到一個字符串類型的變量中。我將聲明爲:string mystring 因此,我可以將沒有逗號的單詞「Hello」存儲到「mystring」中。因此,如果我決定調用「mystring」,我可以說:cout << mystring EDITED部分本身是否可以工作,還是需要代碼的第一部分? 感謝您的快速回復。 – 2009-11-05 05:58:59

2

嘗試ifs​​tream :: get(Ch * p,streamsize n,Ch term)。

一個例子:

char buffer[64]; 
std::cin.get(buffer, 64, ','); 
// will read up to 64 characters until a ',' is found 
// For the string "Hello," it would stream in "Hello" 

如果你需要比只是一個逗號更強大的,你需要進行後處理的字符串。這些步驟可能是:

  1. 讀取流成字符串
  2. 使用字符串:: find_first_of(),以幫助「塊」的字樣
  3. 返回字爲適當。

如果我誤解了你的問題,請隨時詳細說明!

+0

非常感謝您解釋如何忽略逗號以外的字符。我只是有疑問。就像我在上面的回答中的評論。如果我使用char變量(緩衝區)來獲取單詞,我如何將完整的字符存儲到字符串(字串)中。因此,我可以通過簡單地調用字符串(wordstring)來顯示該問題的其他部分。 感謝您的快速響應! – 2009-11-05 05:51:02

1

的一種方法是使用升壓字符串算法庫。有several "replace" functions可用於替換(或刪除)字符串中的特定字符或字符串。

您也可以使用​​3210庫在刪除標點符號後將字符串拆分爲單詞。

+0

謝謝,我會研究一下。 – 2009-11-05 05:41:02