我有一个非常基本的问题。它是关于从字符串输入中提取值然后将此值分配给int然后将此整数复制到屏幕。 这是我的代码:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main ()
{
string mystr;
float price;
int quantity;
cout << "What is your name? ";
getline (cin,mystr);
cout << "Hello Mr. " << mystr << endl;
cout << "Enter price: ";
getline (cin,mystr);
stringstream(mystr) >> price;
cout << "Enter quantity: ";
getline (cin,mystr);
stringstream (mystr) >> quantity;
cout << "Total price: " << quantity*price << endl;
cout << "Thank you for purchasing our product!";
return 0;
}
所以问题是:当被要求输入价格时。我可以输入&#34;价格是16&#34;例如,该程序应该从输入中提取16并将其分配给价格?
答案 0 :(得分:1)
如果您允许这种类型的输入,则必须先剥离Price is
部分,然后才能阅读16
部分。最简单的方法是简单地将输入放入stringstream
并在循环中调用其>>
运算符,直到到达流的数字或结尾,例如:
cout << "Enter price: ";
getline(cin, mystr);
stringstream ss(mystr);
do
{
if (ss >> price)
break;
}
while (!ss.eof());
if (!ss)
{
// no price provided, do something...
}