【发布时间】:2013-11-11 02:55:15
【问题描述】:
我已经完成了我的大部分任务,这需要使用到目前为止我已经正确运行的三个功能。问题是当我添加相应的代码以输出到文件时,最后一个函数不返回值,并且我想要输出到文件的值没有写入文件。该过程也以返回-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;
}
【问题讨论】:
-
你从未初始化过
numberAddress。 -
@Barmar 即使我这样做仍然无法工作
-
你正在写一个指向文件的指针,而不是数组的内容。
-
open() 返回了什么???并且您如上所述将指针写入文件
-
@Saran-san 我想要的是将数组的地址写入文件。当我调用最后一个函数“addTen”并且我没有打开或初始化文件时,一切正常。如果我初始化文件并打开它,最后一个函数将不起作用。我认为是我调用函数“addTen”并输出到文件的组合。
标签: c++ arrays pointers vector output