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

标签 c++ arrays pointers vector output

我已经完成了大部分作业,这需要使用我目前已经正确启动并运行的三个函数。问题是当我添加相应的代码以输出到文件时,最后一个函数没有返回值并且我想要输出到文件的值没有写入文件。该过程也以返回 -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 *numberAddress = new int;

代替 int *numberAddress;

在使用该指针之前,您需要为该指针分配内存。

关于添加输出文件后 C++ 代码无法正确编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19898119/

相关文章:

c++ - 调用模板化成员的模板化方法

c - 如何使用指针传递结构的二维数组

c++ - 调用 CreateProcessAsUser 时,是否需要将 exe 路径指定为 lpCommandLine 中的第一个参数?

C++ 数组 - 限制和大小

javascript - 使用概率分布进行随机抽样的更好方法?

arrays - 带有数组的 typescript 过滤器数组

c++ - 从 `{pointer, length}` 构造 std::span 的静态范围

c++ - 如何在 C++ 中创建良好的上下文类/返回引用?

c++ - 使用 unicode 初始化卡片组

vc140 x64 项目缺少 c++ libgen.h (mingw) - 辅助函数