我正在阅读一个文本文件,其中包含一个带有标点符号的单词,我想将这个单词读成没有标点符号的字符串。
例如,一个单词可能是“你好”,
我希望字符串得到“Hello”(不带逗号)。我怎样才能在C ++中使用ifstream库来做到这一点。 我可以使用ignore函数忽略最后一个字符吗?
提前谢谢。
答案 0 :(得分:2)
尝试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"
如果您需要比简单的逗号更强大,则需要对字符串进行后处理。步骤可能是:
如果我误解了你的问题,请随时详细说明!
答案 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库将字符串拆分为单词。