我正在尝试从文件中读取一组字符并将它们存储到数组中。
让我们说我正在从我的MICHAEL
中提取字符串inputFile
中的每个字母:
int limit = 7;
for(int number = 0; number < limit; number++){
inputFile >> stepc_char;
cout << stepc_char << endl;
}
我想将它们存储到数组中。我怎么能这样做?
(请注意,我无法使用std::vector
)
答案 0 :(得分: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;
}
答案 1 :(得分:0)
假设此序列不会包含公共字符串(意味着std::string
不是您要查找的字符串),那么 std::vector
似乎在这种情况下,保持这个序列是最恰当的方式。
但是既然你添加了一个不允许使用std::string
的约束,那么(为了避免自己处理内存管理)我会建议可变长度数组,如果它们是可用(如果您使用GCC,请参阅Why aren't variable-length arrays part of the C++ standard?):
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