我正在尝试使用cin.get()来每次暂停循环。
prodAtr.h:
#ifndef PRODATR
#define PRODATR
#include <array>
#include <vector>
#include <string>
extern std::array<std::string, 6> sProductType = { //Array contents here };
extern std::vector<std::vector<double>> nProductRates = {
{ //Array contents here },
{ //Array contents here },
{ //Array contents here },
{ //Array contents here },
{ //Array contents here },
{ //Array contents here }
};
#endif
Wholesale.cpp:
#include "stdafx.h"
#include <iostream>
#include "prodAtr.h"
int ShowProdOpt();
float GetCost();
void CalulateTiers(float, int);
int main()
{
using namespace std;
float fCost = GetCost();
cout << endl;
int nOptChoice = ShowProdOpt();
CalulateTiers(fCost, nOptChoice);
return 0;
}
int ShowProdOpt()
{
using namespace std;
cout << "Please select you product type: " << endl;
for (unsigned int i = 0; i < sProductType.size(); i++)
{
cout << "[" << i + 1 << "]" << sProductType[i] << " ";
}
cout << endl;
int nResult;
cin >> nResult;
return nResult;
}
float GetCost()
{
float fCost;
std::cout << "What is the cost? $";
std::cin >> fCost;
return fCost;
}
void CalulateTiers(float fCost, int nType)
{
using namespace std;
int iii = 0;
while(iii < 10)
{
int jjj = iii + 1;
float fPrice = floor(((nProductRates[nType - 1][iii] * fCost) + fCost) * 100 + 0.5) / 100;
cout << "Tier[" << jjj << "]: $" << fPrice << endl;
cin.get();
iii++;
}
}
VS 2013日志输出(减去文件位置信息):
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
但我的结果是:
Tier[1]: $1.34
Tier[2]: $1.22
然后cin.get()似乎暂停并从那里正常工作。
如何在每次执行循环后让cin.get()暂停?
答案 0 :(得分:2)
我无法给出明确的答案,因为您没有提供更多代码,但似乎您的cin缓冲区中已经存在某些内容,因此它在get()中继续执行。
在进入循环之前尝试刷新缓冲区。
答案 1 :(得分:1)
好的,我添加了
cin.clear();
cin.ignore();
在while循环之前。现在它按预期工作。