写一个C++;pgm从文件中读取;input.txt",每当遇到句点时,插入换行符并将修改后的内容写入;output.txt“; 问题:用C++编写一个程序,从文件“INTER.TXT”中读取,每当文件“输入.txt”中遇到一个句点时,插入换行符,然后将修改后的内容写入新文件“输出.txt”并保存。最后打印遇到的周期数

写一个C++;pgm从文件中读取;input.txt",每当遇到句点时,插入换行符并将修改后的内容写入;output.txt“; 问题:用C++编写一个程序,从文件“INTER.TXT”中读取,每当文件“输入.txt”中遇到一个句点时,插入换行符,然后将修改后的内容写入新文件“输出.txt”并保存。最后打印遇到的周期数,c++,file-io,C++,File Io,我写了下面的程序,但是这个程序编译得很好,但是它没有执行,所以请帮助我。谢谢和问候 #include<iostream> #include<fstream> using namespace std; int main(){ int count = 0; ofstream myFile; char ch; myFile.open("D:\\Files\\input.txt"); myFile<<"Hi this is Yo

我写了下面的程序,但是这个程序编译得很好,但是它没有执行,所以请帮助我。谢谢和问候

#include<iostream>
#include<fstream>
using namespace std;
int main(){
    int count = 0;
    ofstream myFile;
    char ch;
    myFile.open("D:\\Files\\input.txt");
    myFile<<"Hi this is Yogish. I'm from Bengaluru, India. And you are ??"<<endl;
    myFile.close();

    ofstream myHandler;
    myHandler.open("D:\\Files\\output.txt");

    fstream handler;
    handler.open("D:\\Files\\input.txt");
    if(handler.is_open()){
                         while(!handler.eof()){
                                             handler>>ch;
                                             if(ch != '.'){
                                                   handler<<ch;
                                                   }
                                             else{
                                                  myHandler<<ch<<'\n';
                                                  handler<<'.'<<'\n';
                                                  count++;
                                                  }
                                                  }
                         }
    cout<<"The number of periods : "<<count++<<endl;
    system("pause");
    }
#包括
#包括
使用名称空间std;
int main(){
整数计数=0;
流文件;
char ch;
myFile.open(“D:\\Files\\input.txt”);

myFile我假设这个问题意味着您只需将修改后的内容写入新文件output.txt。目前您也在尝试写入输入文件

您应该在一个字符串中读取整行,然后使用
标题中的std::replace_if算法

此外,一般情况下,您应该避免检查终止条件为
file.eof()
,因为它仅在读取操作后设置。因此,有可能在读取字符后设置eof()位,这意味着最后一次读取的字符无效,您会将此无效字符输出到文件中

这将导致未定义的行为

相反,您应该尝试以下方法:

bool isDot( const char& character ) {
  return character == '.';
}
在你的主要职能中:

std::string newLine;

// enter the loop only if the read operation is successful
while ( getline( handler, newLine ) ) {
  count += std::count_if( newLine.begin(), newLine.end(), isDot );
  std::replace_if( newLine.begin(), newLine.end(), isDot, '\n' );
  myHandler << newLine;
}
std::字符串换行符;
//仅当读取操作成功时才进入循环
while(getline(处理程序,换行符)){
count+=std::count_if(newLine.begin()、newLine.end()、isDot);
std::如果(newLine.begin(),newLine.end(),isDot,'\n'),则替换_;

myHandler请更具体地说明“不执行”是什么意思。另外,当您尝试调试程序时,您发现了什么?@RaymondChen我所说的“不执行”是什么意思当我编译程序时,我没有收到任何错误,但当我试图执行它时,我只是得到了一个黑屏,其他什么都没有发生,所以我只是关闭了控制台,检查了输出文件,但它是空的。有一次,我在看到35; AbhishekBansal答案后修改了代码,我的程序工作正常。第二个问题呢?我做了什么你发现当你尝试调试程序时,当你闯入程序时,它执行了什么行?@ RaymondChen Ya我试过调试它,但是在我的机器上,在DeV C++上的步进不起作用(即使是强硬的我启用调试选项)所以我无法调试它,所以我只是在这里发布了一个问题,以寻求解决方案。你应该知道如何使用调试器。然后你可以自己解决问题,而不是任由so摆布。使用调试器调试问题比只阅读别人交给你的源代码而不做任何注释或修改要容易100倍算法描述。