我正在研究我的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;
}