我正在閱讀包含帶有標點符號的單詞的文本文件,並且希望將該單詞讀入沒有標點符號的字符串。如何將單詞讀入忽略某個字符的字符串
例如,一個字可能是「你好,」
我想字符串得到「你好」(不帶逗號)。我怎樣才能在C++中使用ifstream庫來做到這一點。 我可以使用忽略功能忽略最後一個字符嗎?
預先感謝您。
我正在閱讀包含帶有標點符號的單詞的文本文件,並且希望將該單詞讀入沒有標點符號的字符串。如何將單詞讀入忽略某個字符的字符串
例如,一個字可能是「你好,」
我想字符串得到「你好」(不帶逗號)。我怎樣才能在C++中使用ifstream庫來做到這一點。 我可以使用忽略功能忽略最後一個字符嗎?
預先感謝您。
如果你只想忽略,
那麼你可以使用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;
}
嘗試ifstream :: 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"
如果你需要比只是一個逗號更強大的,你需要進行後處理的字符串。這些步驟可能是:
如果我誤解了你的問題,請隨時詳細說明!
非常感謝您解釋如何忽略逗號以外的字符。我只是有疑問。就像我在上面的回答中的評論。如果我使用char變量(緩衝區)來獲取單詞,我如何將完整的字符存儲到字符串(字串)中。因此,我可以通過簡單地調用字符串(wordstring)來顯示該問題的其他部分。 感謝您的快速響應! – 2009-11-05 05:51:02
的一種方法是使用升壓字符串算法庫。有several "replace" functions可用於替換(或刪除)字符串中的特定字符或字符串。
您也可以使用3210庫在刪除標點符號後將字符串拆分爲單詞。
謝謝,我會研究一下。 – 2009-11-05 05:41:02
這就像一個魅力,唯一的問題是,我想將字存儲到一個字符串。我怎樣才能做到這一點? – 2009-11-05 05:45:30
字符串與'std :: string'一樣嗎? – Jacob 2009-11-05 05:50:04
我這麼認爲。我只是想將它存儲到一個字符串類型的變量中。我將聲明爲:string mystring 因此,我可以將沒有逗號的單詞「Hello」存儲到「mystring」中。因此,如果我決定調用「mystring」,我可以說:cout << mystring EDITED部分本身是否可以工作,還是需要代碼的第一部分? 感謝您的快速回復。 – 2009-11-05 05:58:59