|
标准标头定义了一种名为的类型,该类型允许将字符串视为流,从而允许以与 和 相同的方式从字符串提取或插入字符串。此功能对于将字符串转换为数值最有用,反之亦然。例如,为了从字符串中提取整数,我们可以编写:<sstream>stringstreamcincout
string mystr ("1204");
int myint;
stringstream(mystr) >> myint;
这将声明一个初始化为值 的变量 和 类型为 的变量。然后,第三行使用此变量从字符串构造中提取。这段代码将数值存储在名为 的变量中。string"1204"intstringstream1204myint
// stringstreams
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main ()
{
string mystr;
float price=0;
int quantity=0;
cout << "Enter price: ";
getline (cin,mystr);
stringstream(mystr) >> price;
cout << "Enter quantity: ";
getline (cin,mystr);
stringstream(mystr) >> quantity;
cout << "Total price: " << price*quantity << endl;
return 0;
}
Enter price: 22.25
Enter quantity: 7
Total price: 155.75
在此示例中,我们从标准输入中间接获取数值:不是直接从 中提取数值,而是从中获取行到字符串对象 () 中,然后将该字符串中的值提取到变量 和 中。一旦这些是数值,就可以对它们执行算术运算,例如将它们相乘以获得总价。
通过这种获取整行并提取其内容的方法,我们将获取用户输入的过程与其作为数据的解释分开,允许输入过程是用户期望的,同时更好地控制程序将其内容转换为有用的数据。cinmystrpricequantity
|
|