我试图从文件中读取,基本上我的文本文件是这样的;
23 4 * 19 2 - + #
6 3 - #
36 #
我试图通过忽略文件末尾的#来从文件中读取它们。我不想接受#
。在那之后,我想将它存储在我的队列中。这是我的代码的一部分,就像这样;当我显示我的队列时,它仍然需要#
。我无法弄清楚为什么。如果你帮助我,我会很高兴
while (!myFile.eof()) {
getline(myFile, a, ' ');
if (a != str4) {
q.enqueue(a);
}
else {
cout << " " << endl;
}
}
q.display(cout);
答案 0 :(得分:0)
一种简单的方法是将文本行读入字符串。接下来找到#
符号并删除#
后字符串中的所有字符。
std::string test_string = "help fred # not fred.\n";
const std::string::size_type position = test_string.find_first("#");
test_string.erase(position, test_string.length() - position);
std::cout << "After truncation, string is: " << test_string << "\n";
答案 1 :(得分:-1)
您可以使用正则表达式清理数据:
std::smatch _match;
std::regex line_regex("(.*)#");
string line;
while(getline(myfile,line))
{
std::regex_search(line, _match, line_regex);
if (_match.size() > 0)
{
cout << _match[1].str() + "\n";
}
}
正则表达式会在#之后忽略任何内容。根据文件的示例内容,输出将是
输入内容:
23 4 * 19 2 - + #
6 3 - # 23244
36 #
输出:
23 4 * 19 2 - +
6 3 -
36