我正在编写一个从输入文件读取的程序,每行都有一个句子。例如:
杰克和“吉尔”
一个人,一个计划,一条运河-巴拿马
永远不要太远。
Euston看到我不是Sue。
我们必须确定这些句子是否是回文,我写了一个do while循环。它似乎工作正常,只是我只需要读取整个行而不是第一行即可。我得到的输出是,假设我的第一行是杰克和“吉尔”:
杰克不是回文
然后我问用户是否要继续前进,我希望它转到下一行,所以我说“是”,然后得到
不是回文
,我可以在这里看到它读取句子中的下一个单词,而不是下一行。我认为这是因为它正在读取空格以确定下一个要看的单词。
本质上,我需要我的程序读取整行内容,而忽略标点符号技巧,例如Jill周围的引号,巴拿马旁边的-等。所以我会得到
杰克和“吉尔”不是回文。
一个人,一个计划,一条运河-巴拿马是回文。
等
这是我的代码:
#include <fstream>
#include <string>
#include <iomanip>
#include <iostream>
using namespace std;
int main() {
string input;
ifstream infile;
string keepgoing;
infile.open("palindromes.txt");
do {
infile >> input;
if (input == string(input.rbegin(), input.rend())) {
cout << input << " is a palindrome" << endl;
} else {
cout << input << " is not a palindrome" << endl;
}
cout << "Do you want to keep going? [Yes or No] ";
cin >> keepgoing;
} while (keepgoing == "Yes" || keepgoing == "yes");
}