当前位置:   article > 正文

C++笔记-sstream的使用(字符串转其他类型,读取文件时用得多)

sstream

在 C++ 中,std::stringstream 类可以用来进行字符串流的输入输出,将字符串和其他类型的数据进行转换。

  1. #include <iostream>
  2. #include <sstream>
  3. int main() {
  4. // 将整数转换为字符串
  5. int num = 123;
  6. std::stringstream ss;
  7. ss << num;
  8. std::string numStr = ss.str();
  9. std::cout << "Integer to String: " << numStr << "\n";
  10. // 将字符串转换为整数
  11. std::string str = "456";
  12. int parsedNum;
  13. ss.clear(); // 重置状态
  14. ss.str(str); // 设置要解析的字符串
  15. ss >> parsedNum;
  16. std::cout << "String to Integer: " << parsedNum << "\n";
  17. return 0;
  18. }

在实际项目中,这个在读取文件时,赋值给结构体用得比较多,如下例子:

  1. #include <iostream>
  2. #include <sstream>
  3. #include <string>
  4. using namespace std;
  5. struct RecvStruct {
  6. string stringVal1;
  7. string stringVal2;
  8. int intVal1;
  9. float floatVal1;
  10. };
  11. std::ostream & operator<<(std::ostream& os, const RecvStruct& r) {
  12. os << r.floatVal1 << " " << r.intVal1 << " " << r.stringVal1 << " " << r.stringVal2 << endl;
  13. return os;
  14. }
  15. int main() {
  16. // 格式化赋值
  17. string rowLine = "IT1995 AAAA 110 268.11 570176391@qq.com www.it1995.cn";
  18. stringstream ss(rowLine);
  19. string notUse;
  20. RecvStruct *recvStruct = new RecvStruct();
  21. ss >> recvStruct->stringVal1 >> notUse >> recvStruct->intVal1
  22. >> recvStruct->floatVal1 >> recvStruct->stringVal2 >> notUse;
  23. cout << *recvStruct << endl;
  24. delete recvStruct;
  25. getchar();
  26. return 0;
  27. }

运行截图如下:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/989338
推荐阅读
相关标签
  

闽ICP备14008679号