我从昨天开始尝试学习 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(数量)类型的变量。”
我的印象是该函数将采用字符串的一个组成部分并将其用作输入。
原文由 user3104350 发布,翻译遵循 CC BY-SA 4.0 许可协议
有时使用 stringstream 在字符串和其他数值类型之间进行转换非常方便。
stringstream
的用法iostream
,所以学习起来不是负担。字符串流可用于读取字符串和将数据写入字符串。它主要与字符串缓冲区一起工作,但没有真正的 I/O 通道。
stringstream 类的基本成员函数是
str()
,它以字符串类型返回其缓冲区的内容。str(string)
,将缓冲区的内容设置为字符串参数。这是一个如何使用字符串流的示例。
结果是
dec: 15 hex: f
。istringstream
或多或少是相同的用法。总而言之,stringstream 是一种 像独立 I/O 设备一样操作字符串 的便捷方式。
仅供参考,类之间的继承关系是: