我正在尝试读取文件并从文件中删除所有标点符号。我一直在使用ispunct()迭代字符串并检查字符是否是标点符号,但它似乎没有捕获所有标点符号。我想知道我做错了什么。这是我的代码:
你好吗?
我很好,谢谢。
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
//removes punctuation, numbers, and extra spaces
void removeNonAlph(string &tmp)
{
for(int i = 0; i < tmp.length(); i++)
{
if (ispunct(tmp[i]))
tmp.erase(i--, 1);
else if (isdigit(tmp[i]))
tmp.erase(i--, 1);
else if ((tmp[i] == ' ') && (tmp[i+1]) == ' ')
tmp.erase(i--, 1);
}
}
int main(int argc, const char * argv[])
{
ifstream file("2.txt");
string tmp;
string words[500];
while (getline(file, tmp))
{
removeNonAlph(tmp);
toLower(tmp);
cout << tmp << endl;
}
file.close();
}
你好吗
我很感谢
答案 0 :(得分:4)
(评论为了便于未来读者的发现而回答)
注意编辑器将非ASCII引号放入文本文件中。许多编辑器生成“智能引号”,通过使用不同的非ASCII字符代码呈现不同的左右引号,看起来更好。 return data.music.filter(function (elem) {
var MatchingTitle = []; // creating a array to holding all matching values
if(elem.Title.indexOf(Title)>=0){
MatchingTitle.push(elem.Title);
}
// var expTitle = Title.indexOf(elem.Title) >= 0;
// var expTitle = elem.Title.toUpperCase().indexOf
//(Title.toUpperCase()) >= 0;
return MatchingTitle.join(''); // use this
});
alert(properties.length);
$("#cover").html("<img src=\" " + properties[0].Poster + " \" alt=\"\" width=\"100\">");
$("#folder").text(properties[0].Folder);
$("#subfolder").text(properties[0].SubFolder);
通常仅适用于ASCII输入。