我正在研究我的C++類的介紹的最終項目,並且我的代碼有問題。 getline似乎並沒有工作,儘管我按照其他時間正確地輸入了它並在其他地方看到過。這裏是一個代碼問題使用getline的問題
if (groceryMenu == 2)
{
string groceryItem;
system("CLS");
cout << "Enter what you would like to add to the grocery list: " << endl;
getline(cin, groceryItem);
groceryVector.push_back(groceryItem);
當此運行段,COUT線顯示在屏幕上(它只是閃爍,但與系統(「暫停」)後,你可以看到它停留),但隨後它退出if循環並返回主循環。我無法弄清楚我在這裏做錯了什麼。任何幫助表示讚賞:)
這是我的代碼的其餘部分,如果有幫助。我知道這很粗糙,我剛開始。
// 7.3 lists and vectors
#include<iostream>
#include<iomanip>
#include<string>
#include<vector>
#include<fstream>
#include "stdafx.h"
using namespace std;
int main()
{
int menuInput = 0;
int exitProgram = 0;
vector<string> groceryVector;
vector<string> hardwareVector;
vector<string> choreVector;
fstream inputFile, outputFile;
string groceryInput;
inputFile.open("grocery.txt");
while (getline(inputFile, groceryInput))
{
groceryVector.push_back(groceryInput);
}
inputFile.close();
string hardwareInput;
inputFile.open("hardware.txt");
while (getline(inputFile, hardwareInput))
{
hardwareVector.push_back(hardwareInput);
}
inputFile.close();
string choreInput;
inputFile.open("chore.txt");
while (getline(inputFile, choreInput))
{
choreVector.push_back(choreInput);
}
inputFile.close();
while (exitProgram == 0)
{
system("CLS");
cout << "List Manager" << endl;
cout << "Press 1 to manage the grocery list." << endl;
cout << "Press 2 to manage the hardware store list." << endl;
cout << "Press 3 to manage the chore list." << endl;
cout << "Press 4 to exit." << endl;
cin >> menuInput;
if (menuInput == 4)
{
system("CLS");
cout << "Now exiting program." << endl;
exitProgram = 2;
break;
}
while (menuInput == 1)
{
system("CLS");
int groceryMenu = 0;
cout << "Press 1 to read the grocery list." << endl;
cout << "Press 2 to add an item to the list." << endl;
cout << "Press 3 to delete an item from the list." << endl;
cout << "Press 4 to return to the main menu." << endl;
cin >> groceryMenu;
if (groceryMenu == 1)
{
system("CLS");
for (string groceryList : groceryVector)
{
cout << groceryList << endl;
}
system("PAUSE");
}
if (groceryMenu == 2)
{
string groceryItem;
system("CLS");
cout << "Enter what you would like to add to the grocery list: " << endl;
getline(cin, groceryItem);
groceryVector.push_back(groceryItem);
}
if (groceryMenu == 3)
{
int eraseLine = 0;
system("CLS");
cout << "What line would you like to erase from the list?" << endl;
cin >> eraseLine;
groceryVector.erase(groceryVector.begin() + (eraseLine - 1));
}
outputFile.open("grocery.txt");
for (string groceryList : groceryVector)
{
outputFile << groceryList << endl;
}
outputFile.close();
if (groceryMenu == 4)
{
menuInput = 0;
}
}
while (menuInput == 2)
{
system("CLS");
int hardwareMenu = 0;
cout << "Press 1 to read the hardware list." << endl;
cout << "Press 2 to add an item to the list." << endl;
cout << "Press 3 to delete an item from the list." << endl;
cout << "Press 4 to return to the main menu." << endl;
cin >> hardwareMenu;
if (hardwareMenu == 1)
{
system("CLS");
for (string hardwareList : hardwareVector)
{
cout << hardwareList << endl;
}
system("PAUSE");
}
if (hardwareMenu == 2)
{
string hardwareItem;
system("CLS");
cout << "Enter what you would like to add to the hardware list: " << endl;
getline(cin, hardwareItem);
hardwareVector.push_back(hardwareItem);
}
if (hardwareMenu == 3)
{
int eraseLine = 0;
system("CLS");
cout << "What line would you like to erase from the list?" << endl;
cin >> eraseLine;
hardwareVector.erase(hardwareVector.begin() + (eraseLine - 1));
}
outputFile.open("hardware.txt");
for (string hardwareList : hardwareVector)
{
outputFile << hardwareList << endl;
}
outputFile.close();
if (hardwareMenu == 4)
{
menuInput = 0;
}
}
while (menuInput == 3)
{
system("CLS");
int choreMenu = 0;
cout << "Press 1 to read the chore list." << endl;
cout << "Press 2 to add an item to the list." << endl;
cout << "Press 3 to delete an item from the list." << endl;
cout << "Press 4 to return to the main menu." << endl;
cin >> choreMenu;
if (choreMenu == 1)
{
system("CLS");
for (string choreList : choreVector)
{
cout << choreList << endl;
}
system("PAUSE");
}
if (choreMenu == 2)
{
string choreItem;
system("CLS");
cout << "Enter what you would like to add to the chore list: " << endl;
getline(cin, choreItem);
choreVector.push_back(choreItem);
}
if (choreMenu == 3)
{
int eraseLine = 0;
system("CLS");
cout << "What line would you like to erase from the list?" << endl;
cin >> eraseLine;
choreVector.erase(choreVector.begin() + (eraseLine - 1));
}
outputFile.open("chore.txt");
for (string choreList : choreVector)
{
outputFile << choreList << endl;
}
outputFile.close();
if (choreMenu == 4)
{
menuInput = 0;
}
}
}
return 0;
}