C++ 中的清除字符串流
本文将介绍在 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 变量的范围。 一旦超出范围,就会被清除。
相关文章
在 C++ 中获取文件的 MD5 哈希值
发布时间:2023/08/18 浏览次数:62 分类:C++
-
MD5 是一种密码协议,以前用于加密,但现在通常用于身份验证。 它基于哈希函数中的哈希过程,针对某些纯文本生成加密的哈希值。什么是哈希函数 在探索 MD5(消息摘要算法)之前,了解哈
将 C# 代码转换为 C++
发布时间:2023/08/18 浏览次数:183 分类:C++
-
本指南将讨论如何将 C# 代码转换为 C++。将整个语言转换为另一种语言被认为几乎是不可能的。 在这种情况下,C# 到 C++ 代码适用于 Unix,但 .NET Framework 无法从 Unix 上的 C++ 获得。
在 C++ 中使用 extern C
发布时间:2023/08/18 浏览次数:140 分类:C++
-
本文讨论 C++ 中的名称重整,这是理解 C++ 中 extern "C" 影响的先决条件。 此外,它还介绍了 C++ 编程中的 extern“C”。C++ 中 extern "C" 的使用 我们使用extern关键字来定义全局变量,也称为外部变量
C++ 中 DWORD 和 Unsigned Int 的区别
发布时间:2023/08/18 浏览次数:187 分类:C++
-
本文将介绍 DWORD 在 C++ 中的一般用法,它与 unsigned int 有着根本的不同,尽管它们目前具有相同的值。C++ 中 DWORD 和 unsigned int 的区别 根据定义,unsigned int 至少有 16 位长。 unsigned int 通常是特定
修复 C++ 中的分段错误
发布时间:2023/08/18 浏览次数:192 分类:C++
-
本文将讨论 C++ 中的分段错误并提供解决此问题的解决方案。C++ 中的分段错误当您的程序或系统尝试访问超出其范围的内存时,C++ 中就会出现分段错误。 这是导致程序在运行时崩溃的常见情况
在 C++ 中通过掷骰子生成随机值
发布时间:2023/04/09 浏览次数:172 分类:C++
-
本文解释了如何使用时间因子方法和模拟 C++ 中的掷骰子的任意数方法生成随机数。了解它是如何工作的以及它包含哪些缺点。提供了一个 C++ 程序来演示伪数生成器。