如何将单词读成字符串而忽略某个字符

时间:2009-11-05 04:26:37

标签: c++ string

我正在阅读一个文本文件,其中包含一个带有标点符号的单词,我想将这个单词读成没有标点符号的字符串。

例如,一个单词可能是“你好”,

我希望字符串得到“Hello”(不带逗号)。我怎样才能在C ++中使用ifstream库来做到这一点。 我可以使用ignore函数忽略最后一个字符吗?

提前谢谢。

3 个答案:

答案 0 :(得分: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. 使用string :: find_first_of()来帮助“chunk”单词
  3. 视情况退回。
  4. 如果我误解了你的问题,请随时详细说明!

答案 1 :(得分: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;
}

答案 2 :(得分:1)

一种方法是使用Boost String Algorithms库。有several "replace" functions可用于替换(或删除)字符串中的特定字符或字符串。

删除标点符号后,您还可以使用Boost Tokenizer库将字符串拆分为单词。