LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 487|回复: 0

字符串流

[复制链接]
发表于 2024-2-19 22:53:53 | 显示全部楼层 |阅读模式
标准标头定义了一种名为的类型,该类型允许将字符串视为流,从而允许以与 和 相同的方式从字符串提取或插入字符串。此功能对于将字符串转换为数值最有用,反之亦然。例如,为了从字符串中提取整数,我们可以编写:<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

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表