仅使用 <iostream>、 <fstream> 和 <cstdlib>清除字符串中的任何多余空格
Clear any extra spaces in a string by only using the <iostream>, <fstream> and <cstdlib>
这是我上一个问题的链接,我有一些代码。
谢谢。
这是我目前掌握的代码。
#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
void clean_file(ifstream& fin, ofstream& fout);
int main()
{
ifstream fin;
ofstream fout;
clean_file(fin, fout);
}
void clean_file(ifstream& fin, ofstream& fout)
{
fin.open("string.txt");
if (fin.fail())
{
cout << "File could not open.";
exit(1);
}
fout.open("cleanString.txt");
if (fout.fail())
{
cout << "File could not open.";
exit(1);
}
char line;
while (fin.get(line))
{
fout << line;
}
fin.close();
fout.close();
}
我目前拥有的输入文件在一些单词之间有额外的空格,我想知道如何检查字符串是否有多个空格,如果有,用一个空格替换它。我想我必须自己检查每个字符,如果连续的字符都是空格,那么我只需要用一个替换它。我已经在网上搜索了我的问题,但我无法通过使用我之前提到的库来找到如何做到这一点。
只需逐字逐句地读取流,然后写下用一个空格分隔的单词(缺点是它也会删除所有换行符):
void clean_stream(std::istream& fin, std::ostream& fout) {
std::string word;
bool first = true;
while (fin >> word) {
if (!first)
fout << ' ';
fout << word;
first = false;
}
}
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- EASTL矢量<向量<int>>连续的
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是std :: set&lt; std :: future&gt;不可能存在
- 是numeric_limits&lt; int&gt; :: is_modulo从逻辑上矛盾
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改
- ///<评论></评论>在Visual Studio中