gpt4 book ai didi

c++ - 流 C++ 的多个函数

转载 作者:行者123 更新时间:2023-11-28 05:44:03 24 4
gpt4 key购买 nike

#include <fstream>
#include <iostream>
#include <cstdlib>
#include <cctype>

using namespace std;

void whitespace_replace(ifstream& in_stream, ofstream& out_stream);
void digit_replace(ifstream& in_stream, ofstream& out_stream);

int main()
{
ifstream fin;
ofstream fout;

cout << "Begin editing files." << endl;
fin.open("example.dat");

if (fin.fail())
{
cout << "Input file opening failed.\n";
exit(1);
}

fout.open("example2.dat");

if (fout.fail())
{
cout << "Output file opening failed.\n";
exit(1);
}

whitespace_replace(fin, fout);
digit_replace(fin, fout);
fin.close();
fout.close();
cout << "End of editing files.\n";
return 0;
}

用连字符替换空格的函数。

void whitespace_replace(ifstream& in_stream, ofstream& out_stream)
{
char next;

do
{
in_stream.get(next);

if (isdigit(next))
out_stream << '#';
else
out_stream << next;
} while (next != '.');
}

用'#'替换数字的函数:

void digit_replace(ifstream& in_stream, ofstream& out_stream)
{
char voip;
do
{
in_stream.get(voip);

if (isspace(voip))
out_stream << "-";
else
out_stream << "-";
} while (voip != '.');
}

它不允许我运行这两个函数来将我的 .dat 文件中的数字更改为“#”并将所有空格替换为“-”。我需要做什么才能使这些功能发挥作用?

最佳答案

后续调用

whitespace_replace(fin, fout);
digit_replace(fin, fout);

当然不会看到 finfout 的相同流状态。

您必须将这些操作组合到一个解析器/决策层次结构中,以从特定状态的输入中转换什么。

关于c++ - 流 C++ 的多个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36583285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com