-1

我正在尝试获取从文件中读取的一组字符并将它们存储到数组中。

假设我正在从字符串MICHAEL中提取每个字母inputFile

int limit = 7;
for(int number = 0; number < limit; number++){
    inputFile >> stepc_char;
    cout << stepc_char << endl;
}

我想将它们存储到一个数组中。我怎样才能做到这一点?
(注意我不能用std::vector

4

2 回答 2

1
I then want to store them into an array

好的,您已经完成了阅读部分,因为您当前的代码已经正确读取。要将值存储到数组中:

// (With minimal changes to your code)
char* my_array = new char[limit];
for (int number = 0; number < limit; number++) {
    inputFile >> stepc_char;
    cout << stepc_char << endl;

    my_array[number] = stepc_char;
}

不要忘记delete[] my_array;当你完成它时。我像这样分配内存而不是这样做的唯一原因char my_array[limit];是因为给定的数组大小必须是恒定的。(这是我可以从我的编译器中得知的)。

如果您不需要无限期地使用该数组,delete[] my_array;请在退出范围之前立即执行。

例如,如果上面的代码在 if 块中,它应该是这样的:

if (someExpression) {

    char* my_array = new char[limit];
    for (int number = 0; number < limit; number++) {
        inputFile >> stepc_char;
        cout << stepc_char << endl;

        my_array[number] = stepc_char;
    }

    // process character array

    delete[] my_array;
}
于 2013-03-21T01:29:05.390 回答
0

假设这个序列不会保存一个公共字符串(这意味着这std::string不是你要找的),那么std::vector在这种情况下似乎是保存这个序列的最合适的方式。

但是由于您添加了一个不允许使用的约束std::string,那么(为了避免您自己处理内存管理)我建议可变长度数组(如果它们可用)(即如果您使用 GCC ,请参阅为什么可变长度数组不是 C++ 标准的一部分?):

char myArray[limit];
for(int i = 0; i < limit; i++)
{
    std::cin >> myArray[i];
}

请注意,在这种情况下myArray,是一个具有自动存储持续时间的数组,其生命周期在执行超出其声明的范围时结束。

否则,您将不得不使用动态分配的数组:

char* myArray = new char[limit];
for(int i = 0; i < limit; i++)
{
    std::cin >> myArray[i];
}
delete[] myArray;                   // don't forget to clean it up
于 2013-03-21T01:32:21.067 回答