Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 文件输出为十六进制?_C++_File Io_Vector - Fatal编程技术网

C++ 文件输出为十六进制?

C++ 文件输出为十六进制?,c++,file-io,vector,C++,File Io,Vector,我正在制作一个程序,该程序将放置一条注释,其中包括我的姓名、日期、文件名以及它的功能描述。它还查找任何添加了每个函数功能描述的int和void函数。 我已经完成了这些步骤 我创建了一个向量,它将整个文件读入自身。然后搜索向量中的任何void或int函数。如果它找到一个int,它将调用string findParameters来查找int的参数,并在描述中列出它们 示例: 问题 该程序在不超过160行时运行良好,但当我输出时,它上面的任何内容都会将所有内容转换为十六进制,当我试图在记事本中打开它时

我正在制作一个程序,该程序将放置一条注释,其中包括我的姓名、日期、文件名以及它的功能描述。它还查找任何添加了每个函数功能描述的
int
void
函数。 我已经完成了这些步骤

我创建了一个
向量
,它将整个文件读入自身。然后搜索向量中的任何
void
int
函数。如果它找到一个
int
,它将调用
string findParameters
来查找int的参数,并在描述中列出它们

示例:

问题

该程序在不超过160行时运行良好,但当我输出时,它上面的任何内容都会将所有内容转换为十六进制,当我试图在记事本中打开它时,除了最后几个函数外,我的大部分代码都会被删除

文件输出示例

当然,这大约有400行

我不知道发生了什么事,所以非常感谢您的帮助!我相信这可能是对我在向量中输入多少行的限制

我的代码

查找参数功能

*这不是我的家庭作业!我做这件事是为了把我的名字自动写在我的作业上,这样我就不必为每一个作业都这么做了*

提前非常感谢

我试图把标题放在我的问题中,使我的代码整洁,但是如果你不喜欢我问题的格式,这里有一个指向我所有代码的链接

下面是我试图操作的.cpp(输入文件)

#包括
#包括
#包括
#包括
使用名称空间std;
整数ndigit(长-长数字){
整数计数器;
用于(计数器=0;数字>0;计数器++){
数字=数字/10;
}
返回计数器;
}
整数反转(长-长数字){
int反向=0;
而(数量>0){
反向=反向*10;
反向=反向+(数字%10);
数字=数字/10;
}
反向返回;
}
bool isPalindrome(长-长数字){
如果(数字==反向(数字)){
返回true;
}
否则{
返回false;
}
}
布尔重复数字(长-长数字){
内部温度[1024];
长-长假_编号=编号;
int计数器=0;
整数极限=ndigit(数字);
而(假编号>0){
临时[计数器]=假_编号%10;
计数器++;
假_数/=10;
}
用于(计数器=0;计数器<限制;计数器++){
for(int counter2=0;counter20){
临时[计数器]=假_编号%10;
计数器++;
假_数/=10;
}
用于(计数器=0;计数器<限制;计数器++){
如果(温度[计数器]%2==0){
ecoount++;
}
否则{
oCount++;
}
}
}
int最大(长n){
内部温度[1024];
长假_数=n;
int计数器=0;
整数极限=ndigit(n);
int largestnum=0;
而(假编号>0){
临时[计数器]=假_编号%10;
计数器++;
假_数/=10;
}
用于(计数器=0;计数器<限制;计数器++){
if(最大值<温度[计数器]){
最大数=温度[计数器];
}
}
返回最大值;
}
最小整数(长n){
内部温度[1024];
长假_数=n;
int计数器=0;
整数极限=ndigit(n);
int smallestnum=10;
而(假编号>0){
临时[计数器]=假_编号%10;
计数器++;
假_数/=10;
}
用于(计数器=0;计数器<限制;计数器++){
if(smallestnum>temp[计数器]){
smallestnum=温度[计数器];
}
}
返回最小值;
}
双平均值(长n){
内部温度[1024];
长假_数=n;
int计数器=0;
整数极限=ndigit(n);
双平均数=0;
而(假编号>0){
临时[计数器]=假_编号%10;
计数器++;
假_数/=10;
}
用于(计数器=0;计数器<限制;计数器++){
平均值+=温度[计数器];
}
返回平均数/非标准单位(n);
}
int main(){
长某物=12345;
int evenCount=0;
int oddCount=0;
/*实际产出*/
ifstream文件;
open(“integers.dat”,ios::in);
if(file.is_open()){
文件>>某物;

cout我看不懂你的代码,但是看起来它对向量没有多大作用,它只是在存储它。如果我没有弄错的话,你可以把你的程序缩短很多,就像下面的代码一样

然而,为了正确地识别函数,您确实需要在向量中存储行来检查它

int main() 
{
    const char* note = "Etcetera Etcetera";

    ifstream in("in.cpp");
    ofstream out("out.cpp");

    string line;
    while (getline(in, line))
    {
        if (
                (
                    line.find('(') != string::npos && 
                    line.find(')') != string::npos
                ) 
                &&
                (
                    line.find("double") == 0 ||
                    line.find("int") == 0 ||
                    line.find("bool") == 0 ||
                    line.find("void") == 0
                )
            )
        {
            out << note << endl;
        }

        out << line << endl;
    }

    system("pause");
    return 0;
}
intmain()
{
const char*note=“Etcetera Etcetera”;
ifstream in(“in.cpp”);
流输出(“out.cpp”);
弦线;
while(getline(in,line))
{
如果(
(
line.find(“(”)!=string::npos&&
line.find(')!=string::npos
) 
&&
(
line.find(“double”)==0||
line.find(“int”)==0||
line.find(“bool”)==0||
行。查找(“无效”)==0
)
)
{

out我无法理解你的代码,但它看起来对向量没有多大作用,它只是在存储它。如果我没有弄错的话,你可以让你的程序像代码一样短很多
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0020 2020 2020 200d 0a20 2020 2020
2020 2063 6f75 6e74 6572 2b2b 3b0d 0a20
2020 2020 2020 2066 616b 655f 6e75 6d62
6572 202f 3d20 3130 3b0d 0a20 2020 207d
0d0a 2020 2020 0d0a 2020 2020 0d0a 2020
string findParameters(string line, string outputFileName, vector<string> &list_parameters){


    ofstream outFile;
    outFile.open(outputFileName, ios::out);
    int comma;
    string something;
    int length;
    int parstart;
    int parend;
    int last;
    if (outFile.is_open()) {

        if (line.find("(") != string::npos) {
            last = parstart = line.find("(",0) + 1;

            if (line.find(")", parstart + 1) != string::npos) {
                 parend = line.find(")", parstart + 1) + 1;



                    do {
                        comma = line.find(",", last+1);

                        if (comma == string::npos) {
                            length = parend - last;
                            something = line.substr(last, length-1);

                            list_parameters.push_back("\n     " + something);
                        }
                        else {
                            length = comma - last;
                            something = line.substr(last, length);

                            list_parameters.push_back("\n     " + something);
                            last = comma+1;
                        }
                    } while (comma != string::npos);




            }
        }
        outFile.close();
    }
    else {
        cout << "\nfile find parameters did not open";
    }

    return "";

}
    //Starting Header
        //File Name
    outFile << "/* \nFilename: " << outputFileName;

        //Date
    char date[9];
    _strdate_s(date);
    outFile << "\n\nDate: " << date << "\n";
        //Description
    outFile << "\nProgrammer: Dyrenex\n\nDescription:\n     //Description of what the code in the file is meant to do and how it does what it is meant to do" << "\n";
    outFile << "\n\n */ \n\n";



    size_t found;
    //Writing the Rest of Input File
    while (isDone != existingFile.size()){

        //Finding void functions
        line = existingFile[isDone];
        if (line.find("void") != string::npos){
            //cout << "\nFound a void!" << "\n";
            outFile << "\n/*Function: \nDescription:\n     Description of the function\nParameters:" <<
                "\n     Parameters here\n Returns:\n     returnVal:*/";

        }
        else if (line.find("int",0) != string::npos) {
            int intstart = line.find("int");

            if (line.find("(", intstart + 1) != string::npos) {
                int parstart = line.find("(", intstart + 1);

                if (line.find(")", parstart + 1) != string::npos) {
                    int parend = line.find(")", parstart + 1);
                    vector<string> list_parameters;

                    outFile << "\n/*Function: " << line.substr(intstart, parstart)
                        << "\nDescription: \n     Description of the function\nParameters:";

                    findParameters(line, outputFileName,list_parameters);

                    int counter = 0;

                    while (counter != list_parameters.size()) {
                        outFile << list_parameters[counter] << ": Description";
                        counter++;
                    }


                        outFile << "\n Returns:\n     returnVal: Description\n*/";

                }
            }
        }

        //outputting file line
        outFile << "\n" << existingFile[isDone];

        isDone++;

    }


    outFile.close();
    ifstream inFile;
    inFile.open(inputFileName, ios::in);
    if (inFile.is_open()){

        while (!inFile.eof()){

            getline(inFile, line);
            existingFile.push_back(line);
        }

        inFile.close();
     }
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;


int nDigits(long long number){


    int counter;
    for (counter = 0; number > 0; counter++){
        number = number / 10;

    }

    return counter;

}

int reverse(long long number){

    int reverse = 0;
    while (number > 0){

        reverse = reverse * 10;
        reverse = reverse + (number % 10);
        number = number / 10;

    }

    return reverse;
}

bool isPalindrome(long long number){

    if (number == reverse(number)){
        return true;
    }
    else{
        return false;
    }
}

bool repeatsDigit (long long number){


    int temp[1024];
    long long fake_number = number;
    int counter = 0;
    int limit = nDigits(number);


    while (fake_number > 0){
        temp[counter] = fake_number % 10;

        counter++;
        fake_number /= 10;
    }


    for (counter = 0; counter < limit; counter++){

        for (int counter2 = 0; counter2 < limit; counter2++){

            if (temp[counter] == temp[counter2] && counter != counter2){
                return true;
            }

        }

    }

    return false;
}

void digitCount( long long n, int& eCount, int& oCount){

    int temp[1024];
    long long fake_number = n;
    int counter = 0;
    int limit = nDigits(n);


    while (fake_number > 0){
        temp[counter] = fake_number % 10;

        counter++;
        fake_number /= 10;
    }


    for (counter = 0; counter < limit; counter++){

        if (temp[counter] % 2 == 0){
            eCount++;
        }
        else{
            oCount++;
        }

    }


}

int largest(long long n){

    int temp[1024];
    long long fake_number = n;
    int counter = 0;
    int limit = nDigits(n);
    int largestnum = 0;

    while (fake_number > 0){
        temp[counter] = fake_number % 10;

        counter++;
        fake_number /= 10;
    }


    for (counter = 0; counter < limit; counter++){

        if (largestnum < temp[counter]){
            largestnum = temp[counter];
        }

    }
    return largestnum;
}
int smallest(long long n){

    int temp[1024];
    long long fake_number = n;
    int counter = 0;
    int limit = nDigits(n);
    int smallestnum = 10;

    while (fake_number > 0){
        temp[counter] = fake_number % 10;

        counter++;
        fake_number /= 10;
    }


    for (counter = 0; counter < limit; counter++){

        if (smallestnum > temp[counter]){
            smallestnum = temp[counter];
        }

    }

    return smallestnum;
}
double average(long long n){

    int temp[1024];
    long long fake_number = n;
    int counter = 0;
        int limit = nDigits(n);
        double averagenum = 0;

    while (fake_number > 0){
        temp[counter] = fake_number % 10;

        counter++;
        fake_number /= 10;
    }


    for (counter = 0; counter < limit; counter++){

        averagenum += temp[counter];

    }

    return averagenum/nDigits(n);
}


int main(){

    long long something = 12345;
    int evenCount = 0;
    int oddCount = 0;



    /*real output*/
    ifstream file;
    file.open("integers.dat",ios::in);
    if (file.is_open()){
        file >> something;
        cout << "The number of digits in " << something << " is " << nDigits(something) << "\n";

        file >> something;
        cout << "The reverse of : " << something << " is " << reverse(something) << "\n";

        file >> something;
        if (isPalindrome(something) == 1){
            cout << "There is a Palindrome in number: " << something << "\n";
        }
        else{
            cout << something << " is NOT a Palindrome" << "\n";

        }

        file >> something;
        if (repeatsDigit(something) == 1){
            cout << "There are repeat digits in " << something << "\n";
        }
        else{
            cout << "There are NOT repeat digits: in " << something << "\n";

        }
        file >> something;
        digitCount(something, evenCount, oddCount);
        cout << "There are " << evenCount <<" Even and, " << oddCount <<" Odd in the number " << something << "\n";

        file >> something;
        cout << "The largest Number in " << something << " is " << largest(something) << "\n";

        file >> something;
        cout << "The smallest Number in " << something << " is " << smallest(something) << "\n";

        file >> something;
        cout << "The average Number in " << something << " is " << fixed << setprecision(1) << average(something) << "\n";

    }
    else {
        cout << "File did not open";
    }

    return 0;
}
int main() 
{
    const char* note = "Etcetera Etcetera";

    ifstream in("in.cpp");
    ofstream out("out.cpp");

    string line;
    while (getline(in, line))
    {
        if (
                (
                    line.find('(') != string::npos && 
                    line.find(')') != string::npos
                ) 
                &&
                (
                    line.find("double") == 0 ||
                    line.find("int") == 0 ||
                    line.find("bool") == 0 ||
                    line.find("void") == 0
                )
            )
        {
            out << note << endl;
        }

        out << line << endl;
    }

    system("pause");
    return 0;
}