如果沒有輸入「密碼」,代碼會詢問用戶的名字。如果找到該名稱,則將其名稱指定爲用戶。C++不能用鍵盤輸入
代碼打擊是一個更大的簡化版本,但問題是完全一樣的。在else語句中,std::cout << "Hello " << FirstName << std::endl;
無限重複。如果我刪除std::cout << "Hello " << FirstName << std::endl;
我無法輸入任何內容。就好像我的鍵盤被拔掉了一樣。嘗試使用goto,個案,甚至製作一個功能,但問題仍然存在。有任何想法嗎?
#include <fstream>
#include <iostream>
#include <string>
int main()
{
std::string User;
std::string text;
std::string PassWord;
std::cin >> PassWord;
if(PassWord == "password")
{
User = "Ryan";
}
else if (PassWord != "password")
{
std::string line;
std::string LastName;
std::string FirstName;
std::string AttemptUser;
std::ifstream NameFile;
int offset;
std::cout << "Name?" << std::endl;
NameFile.open("C:\\Filepath\\Names.txt");
if(NameFile.is_open())
{
while(!NameFile.eof())
{
while(std::cin >> FirstName >> LastName)//<---Needing to press Ctrl-z still a problem!
AttemptUser = FirstName + ' ' + LastName;
if((offset = line.find(AttemptUser, 0)) != std::string::npos)
{
NameFile.close();
std::cout << "Hello " << FirstName << std::endl;
User = FirstName;
}
}
}
}
do
{
std::getline(std::cin, text);
if(text.find("the code") != std::string::npos)
{
std::cout << "Yes " << User << ", this is the code" << std::endl;
}
}
while (text != "close");
system("pause");
return 0;
}
你有沒有試過設置一個斷點並逐步查看會發生什麼?你問過你的教授嗎? 「goto」是邪惡的。此外,你從來沒有真正閱讀文件,只是打開和關閉它。 – 2014-12-05 21:44:16
有VS 2012 Express所以不能一步一步通過。請詳細說明我沒有真正閱讀文件。可能是我的問題。 – opmxvzasdt 2014-12-05 22:33:12
你可以在4行上引用'NameFile'(順便說一下,停止在局部變量中大寫第一個字符 - 不是很好的做法)。聲明,'if(NameFile.is_open())','while(!NameFile.eof())'和NameFile.close()'。在任何時候你都沒有從文件中讀取數據,所以'.eof()'如果文件存在並且不爲空,它將會總是*爲假。 – 2014-12-05 23:13:33