C++ stringstream 类的 10 种高级用法(C++的字符串处理技巧)

C++ stringstream 类的 10 种高级用法

stringstream 类是 C++ 标准库中的一个非常有用的类,它可以帮助我们在字符串和其他数据类型之间进行转换。下面是一些关于 stringstream 类的高级用法。

1. 将字符串转换为其他数据类型

我们可以使用 stringstream 类将字符串转换为其他数据类型,例如 int、double 等。下面是一个例子:

#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::string str = "12345";
    std::stringstream ss(str);
    int num;
    ss >> num;
    std::cout << num << std::endl; // 输出 12345
    return 0;
}

2. 将其他数据类型转换为字符串

我们也可以使用 stringstream 类将其他数据类型转换为字符串。下面是一个例子:

#include <iostream>
#include <sstream>
#include <string>

int main() {
    int num = 12345;
    std::stringstream ss;
    ss << num;
    std::string str = ss.str();
    std::cout << str << std::endl; // 输出 "12345"
    return 0;
}

3. 分割字符串

我们可以使用 stringstream 类来分割字符串。下面是一个例子:

#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::string str = "one two three four";
    std::stringstream ss(str);
    std::string word;
    while (ss >> word) {
        std::cout << word << std::endl;
    }
    return 0;
}

4. 连接多个字符串

我们可以使用 stringstream 类来连接多个字符串。下面是一个例子:

#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::stringstream ss;
    ss << "one" << " two" << " three" << " four";
    std::string str = ss.str();
    std::cout << str << std::endl; // 输出 "one two three four"
    return 0;
}

5. 格式化输出

我们可以使用 stringstream 类来格式化输出。下面是一个例子:

#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>

int main() {
    double pi = 3.14159265358979323846;
    std::stringstream ss;
    ss << std::fixed << std::setprecision(2) << pi;
    std::string str = ss.str();
    std::cout << str << std::endl; // 输出 "3.14"
    return 0;
}

6. 清空 stringstream 对象

我们可以使用 str("") 函数来清空 stringstream 对象中的内容。下面是一个例子:

#include <iostream>
#include <sstream>
#include <string>

int main() {
    int num = 12345;
    std::stringstream ss;
    ss << num;
    
    // 清空 stringstream 对象
    ss.str("");
    
    double pi = 3.14159;
    ss << pi;
    
    std::string str = ss.str();
    
    // 输出 "3.14159"
    // 如果没有清空 stringstream 对象,则输出 "123453.14159"
    std::cout << str << std::endl; 
   
   return 0;
}

7. 检查 stringstream 对象是否为空

我们可以使用 str().empty() 函数来检查 stringstream 对象是否为空。下面是一个例子:

#include <iostream>
#include <sstream>
#include <string>

int main() {
   int num = 12345;
   std::stringstream ss;

   if (ss.str().empty()) {
      std::cout << "Empty" << std::endl; // 输出 "Empty"
   }

   ss << num;

   if (!ss.str().empty()) {
      std::cout << "Not empty" << std::endl; // 输出 "Not empty"
   }

   return 0;
}

8. 使用 getline 函数读取一整行

我们可以使用 getline 函数从 stringstream 对象中读取一整行。下面是一个例子:

#include <iostream>
#include <sstream>
#include <string>

int main() {
   std::string str = "one\ntwo\nthree\nfour";
   std::stringstream ss(str);
   std::string line;
   while (std::getline(ss, line)) {
      std::cout << line << std::endl;
   }
   return 0;
}

9. 使用 peek 函数查看下一个字符

我们可以使用 peek 函数查看 stringstream 对象中的下一个字符,而不会改变 stringstream 对象的状态。下面是一个例子:

#include <iostream>
#include <sstream>
#include <string>

int main() {
   std::string str = "12345";
   std::stringstream ss(str);
   char ch = ss.peek();
   std::cout << ch << std::endl; // 输出 '1'
   
   int num;
   ss >> num;
   std::cout << num << std::endl; // 输出 12345
   return 0;
}

10. 使用 putback 函数将字符放回 stringstream 对象

我们可以使用 putback 函数将字符放回 stringstream 对象中。下面是一个例子:

#include <iostream>
#include <sstream>
#include <string>

int main() {
   std::string str = "12345";
   std::stringstream ss(str);
   
   char ch;
   ss.get(ch);
   
   // 将字符 '1' 放回 stringstream 对象中
   ss.putback(ch);
   
   int num;
   ss >> num;
   
   // 输出 12345
   // 如果没有使用 putback 函数,则输出 2345
   std::cout << num << std::endl; 
   
   return 0;
}

以上就是关于 C++ stringstream 类的 10 种高级用法。希望对您有所帮助。

  • 26
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值