我从昨天开始尝试学习 C++,我正在使用这个文档:http://www.cplusplus.com/files/tutorial.pdf(第 32 页)。我在文档中找到了一段代码并运行了它。我尝试输入价格为 5.5 卢比,数量为整数,但输出为 0。
我尝试输入5.5和6,输出是正确的。
// 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;
}
mystring 命令到底有什么作用?引用自文档:
“在这个例子中,我们从标准输入获取数值
间接地。而不是直接从数据中提取数值
标准输入,我们将标准输入(cin)中的行放入
字符串对象(mystr),然后我们从其中提取整数值
将此字符串转换为 int 类型的变量(数量)。”
我的印象是该函数将获取字符串的组成部分并将其用作输入。
有时候使用stringstream在字符串和其他数值类型之间进行转换是非常方便的。的用法stringstream
类似于iostream
,所以这不是学习的负担。
字符串流既可用于读取字符串,也可用于将数据写入字符串。它主要使用字符串缓冲区,但没有真正的 I/O 通道。
stringstream类的基本成员函数是
这是如何使用字符串流的示例。
ostringstream os;
os << "dec: " << 15 << " hex: " << std::hex << 15 << endl;
cout << os.str() << endl;
结果是dec: 15 hex: f
.
istringstream
或多或少有相同的用法。
总而言之,stringstream 是一种便捷的方法像独立 I/O 设备一样操作字符串.
仅供参考,类之间的继承关系是:
![string stream classes](https://i.stack.imgur.com/0fZlv.gif)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)