所以,这是我的一个类的简单部分的代码:
void ArrayToTextFile::textfiller(string *givenpointer){
cout<< "Recieved array pointer address" << givenpointer << endl;
const char * constantcharversion = path.c_str();
ofstream filler(constantcharversion);
int i = 0;
//string delims = (string)delim;
for(i = 0; i < sizeof(*givenpointer); i++) {
filler << *givenpointer << delim;
givenpointer = givenpointer + 1;
}
filler.close();
}
指针指向字符串数组中的第一个元素。
delim
是';'
这是我的主要课程:
#include <iostream>
#include "ArrayToTextFile.h"
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
system("color 1A");
cout << "Hello world!" << endl;
string kinch[3] = {"a", "second el", "third"};
ArrayToTextFile newone("C:/haha.txt", ';');
string *pointy = &kinch[0];
newone.textfiller(pointy);
return 0;
}
每当程序运行时,我都无法进入return语句。实际上我必须单击控制台窗口上的退出按钮。当我查看创建的文本文件时,它是巨大的:
我的问题是什么?我该如何解决这个问题?
答案 0 :(得分:0)
您需要传入数组中的元素数。 sizeof
只会给你一个字节大小,这很少有用。为了获得数组的大小,你可以使用(sizeof array)/(sizeof array[0])
,但是在函数内部你只有一个指针,而不是一个数组,这会给你不同的结果。