添加输出文件后C++代码无法正确编译

C++ code doesn't compile correctly after adding output file

本文关键字:编译 代码 输出 文件 C++ 添加      更新时间:2023-10-16

我已经完成了大部分作业,这需要使用到目前为止我已正确启动并运行的三个函数。问题是当我添加相应的代码以输出到文件时,最后一个函数不返回值,并且我要输出到文件的值没有写入文件。此外,该过程以返回 -1 结束。请查看下面的代码,告诉我我做错了什么。

#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
string* returnGreetings() {
    int const SIZE = 50000;
    string message;
    string* greetings = new string[SIZE];
    for (int i = 0; i < SIZE; i++)
    {
    if (i < 12500)
        {
            message = "Hi";
            greetings[i] = message;
        }
    else if (i >= 12500 && i < 25000)
        {
            message = "Hey";
            greetings[i] = message;
        }
    else if (i >= 25000 && i < 37500)
        {
            message = "Hello";
            greetings[i] = message;
        }
    else if (i >= 37500)
        {
            message = "What's up";
            greetings[i] = message;
        }
    }
    return greetings;
}
vector<string> returnVectorGreetings()
{
    string message;
    vector <string> greetings;
    for (int i = 0; i < 50000; i++)
    {
    if (i < 12500)
        {
            message = "Hi";
            greetings.push_back(message);
        }
    else if (i >= 12500 && i < 25000)
        {
            message = "Hey";
            greetings.push_back(message);
        }
    else if (i >= 25000 && i < 37500)
        {
            message = "Hello";
            greetings.push_back(message);
        }
    else if (i >= 37500)
        {
            message = "What's up";
            greetings.push_back(message);
        }
    }

    return greetings;
}
int addTen(int *numberAddress)
{
    return *numberAddress + 10;
}
int main()
{
    int *numberAddress;
    string* address = returnGreetings();
    cout << address;
    string *a = returnGreetings();
    for (int i = 0; i < 50000; i++) cout << a[i] << endl;
    vector<string> m = returnVectorGreetings();
    for (int i = 0; i < 50000; i++) cout << m[i] << endl;
    cout << "Please enter a number: ";
    cin >> *numberAddress;
    cout << "The number plus 10 is: " << addTen(numberAddress) << endl;
    ofstream outfile;
    outfile.open("output.txt");
    outfile << address;
    outfile.close();
    return 0;
}

只需使用这个 int *数字地址 = 新 int;

而不是 整数 *数字地址;

在使用指针

之前,需要为指针分配内存。

问题出在numberAddress 上。 它未初始化。

当您尝试将其与 cin 一起使用并将其传递给 addTen() 时,您的程序可能正在访问无效内存并崩溃。

尝试初始化它以指向 int 变量,如下所示:

int naValue;
int *numberAddress = &naValue; // initialize numberAddress