2014-10-18 1 views
0

У меня есть очень простой вопрос. Речь идет об извлечении значения из строкового ввода, а затем присваивании этого значения 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; 
} 

Таким образом, вопрос: когда просят ввести цену. Могу ли я напечатать «Цена 16», например, и программа должна извлечь 16 из ввода и назначить ее цене?

ответ

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... 
}