0

所以,这是我的一个简单部分的代码:

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 语句。事实上,我必须单击控制台窗口上的退出按钮。当我查看创建的文本文件时,它很大:

看这里

我的问题是什么?我怎样才能解决这个问题?

4

1 回答 1

0

您需要传入数组中的元素数量。sizeof只会给你一个以字节为单位的大小,这很少有用。为了获取数组的大小,您可以使用(sizeof array)/(sizeof array[0]),但在函数内部您只有一个指针,而不是数组,这会给您带来不同的结果。

于 2013-01-14T19:14:58.247 回答