-3
C++ソースファイルを読み込んで、すべての '<'シンボルを「<」に変換し、すべての '>'シンボルを「>」に変換しています。私は主な方法を書いたが、うまくコンパイルされたものはすべてだが、実際にプログラムの先頭にある変換機能を実際に書き出しているので、無限ループに陥り、その犯人が何であるかについて壁を打っている。誰かが私を助けてくれますか? 問題が私のI/Oコーディングにある場合に備えてプログラム全体が含まれていましたが、関数をスラッシュで囲みました。うまくいけば、私は燃え尽きることはありません。ループ内でスタックされたI/Oプログラム
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <cstring>
using namespace std;
//FUNCTION GOES THROUGH EACH CHARACTER OF FILE
//AND CONVERTS ALL < & > TO < or > RESPECTIVELY
//////////////THIS IS THE FUNCTION IN QUESTION//////////
void convert (ifstream& inStream, ofstream& outStream){
cout << "start" << endl;
char x;
inStream.get(x);
while (!inStream.eof()){
if (x == '<')
outStream << "<";
else if (x == '>')
outStream << ">";
else
outStream << x;
}
cout << "end" << endl;
};
///////////////////////////////////////////////////////////////////////////
int main(){
//FILE OBJECTS
ifstream inputStream;
ofstream outputStream;
string fileName;
//string outFile;
//USER PROMPT FOR NAME OF FILE
cout << "Please enter the name of the file to be converted: " << endl;
cin >> fileName;
//outFile = fileName + ".html";
//ASSOCIATES FILE OBJECTS WITH FILES
inputStream.open(fileName.c_str());
outputStream.open(fileName + ".html");
//CREATES A CONVERTED OUTPUT WITH <PRE> AT START AND </PRE> AT END
outputStream << " <PRE>" << endl;
convert(inputStream, outputStream);
outputStream << " </PRE>" << endl;
inputStream.close();
outputStream.close();
cout << "Conversion complete." << endl;
return 0;
}
このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、その問題を再現するためのデバッガ。 –
ここにはバグが多すぎます。信頼性の高い 'while!feof'バグから始まり、Loop Of Mysteryで終わり、ループのどこかで何らかの変数が値を変更すると魔法のように期待しています。 –
信じられないほど難しいファイルから決して読み取らないループ内のファイルの – user4581301