首页 > 后端开发 > C++ > 正文

C++程序使用字符串流删除字符串中的空格

PHPz
发布: 2023-08-27 10:21:05
转载
1313 人浏览过

C++程序使用字符串流删除字符串中的空格

正如给定的问题所述,我们需要使用字符串流从字符串中删除空格。顾名思义,字符串流将字符串转换为流。它的工作方式类似于 C++ 中的 cin。它关联一个字符串对象,该对象可以访问存储它的字符串缓冲区。

string s =" a for apple, b for ball";
res = solve(s);
登录后复制

使用字符串缓冲区,我们将逐个读取每个单词,然后将其连接成一个新字符串,这将是我们的答案。

注意 - 类字符串流在 C++ 的 sstream 头文件中可用,因此我们需要包含它。

让我们看看一些输入/输出场景

假设函数的输入中没有空格,则输出结果将与输入相同 -

Input: “Tutorialspoint”
Result: “Tutorialspoint”
登录后复制

假设函数的输入中没有空格,则输出结果将是不含空格的字符串 -

Input: “Tutorials Point”
Result: “TutorialsPoint”
登录后复制

假设函数接受的输入中只有空格,该方法无法提供输出结果 -

Input: “ ”
Result: 
登录后复制

算法

  • 考虑带有字符的输入字符串。

  • 检查字符串是否为空,并使用 stringstream 关​​键字删除输入中存在的所有空格。

  • 此过程将一直完成,直到字符串流指针到达行尾。

  • 如果到达字符串的行尾,则程序终止。

  • 更新后的字符串返回到输出结果。

示例

例如,我们有一个字符串,例如“a 代表苹果,b 代表球”,我们需要将其转换为“aforapple,bforball”。

遵循从字符串输入中删除空格以使其成为字符流的详细代码 -

#include <iostream>
#include <sstream>
using namespace std;
string solve(string s) {
   string answer = "", temp;
   stringstream ss;
   ss << s;
   while(!ss.eof()) {
      ss >> temp;
      answer+=temp;
   }
   return answer;
}
int main() {
   string s ="a for apple, b for ball";
   cout << solve(s);
   return 0;
}
登录后复制

输出

Aforapple,bforball
登录后复制
登录后复制

示例(使用 getline)

我们还有另一种方法,使用 getline 在 C++ 中解决相同的查询。

#include <iostream>
#include <sstream>
using namespace std;
string solve(string s) {
   stringstream ss(s);
   string temp;
   s = "";
   while (getline(ss, temp, ' ')) {
      s = s + temp;
   }
   return s;
}
int main() {
   string s ="a for apple, b for ball";
   cout << solve(s);
   return 0;
}
登录后复制

输出

Aforapple,bforball
登录后复制
登录后复制

结论

我们看到,使用字符串流,字符串存储在缓冲区中,我们可以逐字获取字符串并将其连接起来,删除空格。

以上是C++程序使用字符串流删除字符串中的空格的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板