迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > C++ >

C++ 中的清除字符串流

作者:迹忆客 最近更新:2023/08/18 浏览次数:

本文将介绍在 C++ 中清除或清空字符串流的不同方法。


在C++中使用str("")和clear()方法清除字符串流

要清除或清空字符串流,我们可以使用 str("")clear() 方法,但我们必须同时使用这两种方法; 否则程序可能无法正常工作,即不会给出正确的输出。

示例代码(仅使用 str("")):

#include <bits/stdc++.h>
using namespace std;


int main()
{
    string temp;

    string temp2;

    stringstream ss;

    for(int i=0;i<5;i++)

    {

       ss.str("");
        ss<<i;
        temp = ss.str();
        ss>>temp2;
        cout<<temp<<" "<<ss.str()<<" "<<temp2<<endl;

    }


}

输出:

0 0 0
  0
  0
  0
  0

上面的输出不正确,因为使用 ss.str("") 确实清除了字符串,但问题是我们无法向流添加新值。

这就是为什么在第一行中,我们得到正确的输出 0 0 0,但在下一次迭代中,字符串 temp 和 temp2 都变为空,因为新值不会添加到流中。 所以这就像给它们两个分配一个空字符串。

示例代码(同时使用 str("")clear() ):

clear() 函数重置流的错误状态。 每当流中出现错误时,错误状态就会设置为 eofbit(文件结束),并且通过使用 clear(),我们可以将其重置回 goodbit,表示没有错误。

#include <bits/stdc++.h>
using namespace std;


int main()
{
    string temp;

    string temp2;

    stringstream ss;

    for(int i=0;i<5;i++)

    {
      ss.clear();
       ss.str("");
        ss<<i;
        temp = ss.str();
        ss>>temp2;
        cout<<temp<<" "<<ss.str()<<" "<<temp2<<endl;

    }
}

输出:

0 0 0
1 1 1
2 2 2
3 3 3
4 4 4

解释:在这里,我们得到了正确的输出,因为使用 clear()str("") 允许我们在清除流后向流添加新值。


在 C++ 中使用范围界定清除字符串流

尽管作为第一种方法无效,但这是清除字符串流的解决方法。 我们可以使用范围界定的概念。

示例代码:

#include <bits/stdc++.h>
using namespace std;


int main()
{
   {
   stringstream ss;
    ss <<"our code part ";
    cout<<ss.str()<<endl;
}

{
    stringstream ss;
    ss << "Tony ";
      cout<<ss.str()<<endl;
}

{
    stringstream ss;
    ss << "stark ";
    cout<<ss.str()<<endl;
}
}

输出:

our code part
Tony
stark

说明:在这里,我们必须使用大括号 { } 来定义该 stringstream 变量的范围。 一旦超出范围,就会被清除。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Arduino 中停止循环

发布时间:2024/03/13 浏览次数:444 分类:C++

可以使用 exit(0),无限循环和 Sleep_n0m1 库在 Arduino 中停止循环。

Arduino 复位

发布时间:2024/03/13 浏览次数:315 分类:C++

可以通过使用复位按钮,Softwarereset 库和 Adafruit SleepyDog 库来复位 Arduino。

Arduino 的字符转换为整型

发布时间:2024/03/13 浏览次数:181 分类:C++

可以使用简单的方法 toInt()函数和 Serial.parseInt()函数将 char 转换为 int。

Arduino 串口打印多个变量

发布时间:2024/03/13 浏览次数:381 分类:C++

可以使用 Serial.print()和 Serial.println()函数在串口监视器上显示变量值。

Arduino if 语句

发布时间:2024/03/13 浏览次数:123 分类:C++

可以使用 if 语句检查 Arduino 中的不同条件。

Arduino ICSP

发布时间:2024/03/13 浏览次数:214 分类:C++

ICSP 引脚用于两个 Arduino 之间的通信以及对 Arduino 引导加载程序进行编程。

使用 C++ 编程 Arduino

发布时间:2024/03/13 浏览次数:127 分类:C++

本教程将讨论使用 Arduino IDE 在 C++ 中对 Arduino 进行编程。

Arduino 中的子程序

发布时间:2024/03/13 浏览次数:168 分类:C++

可以通过在 Arduino 中声明函数来处理子程序。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便