我试图编写一个程序,打开一个充满单词的text
文件("字典"减去定义)并将这些值存储在字符串中,以便将它们与a进行比较用户输入以确定用户输入是否拼写正确。
我开始工作并做我想做的事,但我似乎无法找出一个具体的细节。我希望程序继续运行,直到用户输入"退出"作为输入。唯一的问题是,我的计划会继续无限地喷出"input is spelled correctly"
或"input is not spelled correctly"
,而不会让用户有机会输入更多的值。
如何使程序只输出这两个选项中的一个,然后提示用户输入另一个输入而不是同一个语句的永无止境的流?先谢谢你了!
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string line; //holds values from txt file
string input; //holds user-inputted values
ifstream inputFile; //fstream operator declaration
bool isFound = false; //bool value to indicate if the string has been found
inputFile.open("dict.txt", ios::in);
if (inputFile)
{
cout << "Enter word to spellcheck (or exit to end)\n";
getline(cin, input);
while (input != "exit")
{
while (getline(inputFile, line))
{
if (input == line)
{
isFound = true;
break;
}
else
{
isFound = false;
}
}
inputFile.close();
if (isFound)
{
cout << input << " is spelled correctly.\n";
}
else
{
cout << input << " is not spelled correctly.\n";
}
}
if (input == "exit")
{
cout << "Ending program...\n";
}
}
else
{
cout << "Cannot open file\n";
}
return 0;
}
答案 0 :(得分:0)
的正文内部
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.aboutMeTap), name: "about", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.educationTap), name: "education", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.projectsTap), name: "projects", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.whyPressed(_:)), name: "why", object: nil)
循环永远不会要求用户更新输入值。将while (input != "exit")
移入while状态,如下所示:
getline(cin, input)
将解决这个问题。
然后下一个问题是处理字典文件。它在循环中间关闭,因此后续读取将立即失败。 OP可以使用inputFile.seekg(0);
将读指针重置为文件的开头,但为什么每次都重新读取文件。
而是将字典文件读入std::set
,其代码与搜索中使用的代码大致相同:
while (getline(cin, input) && input != "exit")
在程序的开头,在循环中搜索用户输入的集合。
std::set<std::string> dictionary;
while (getline(inputFile, line))
{
dictionary.insert(line);
}
答案 1 :(得分:0)
这应该可以解决问题,你只需要在while循环中移动你的getline块,并在while循环之外移动文件close语句:
class classOne {
public float x;
public float y;
public float Z;
public classOne() {
x = 0;
y = 0;
z = 0;
}
public classOne(float X, float Y, float Z) {
x = X;
y = Y;
z = Z;
}
}
class classTwo {
public classOne a;
public classOne b;
public classOne c;
public classTwo() {
a = new classOne();
b = new classOne();
c = new classOne();
}
public IEnumerator GetEnumerator() {
return (IEnumerator)this;
//Error: InvalidCastException: Cannot cast from source type to destination type.
}
}