下面是我的代码片段。基本上,我想知道为什么分别打印contextFile[0]contextFile[1]与通过for循环输出时会有区别。

contextfile.txt(在这种情况下为target_file_name的值)中,我具有以下内容:


  山核桃迪克里点有一个小农场,你觉得我。


这是代码:

cin >> target_file_name;
ifstream fileExist(target_file_name);
if (fileExist)
{
    int count = 0;
    int contextSize = 1000;
    int keySize = 1000;
    char *contextFile;
    char *keyFile;
    contextFile = new char[contextSize];
    keyFile = new char[keySize];
    string command;
    fileExist >> contextFile[count];
    while (!fileExist.fail())
    {
        count++;
        fileExist >> contextFile[count];
    }
    cout << "printing individual: " << contextFile[0] << contextFile[1];
    cout << "Printing the contextfile array: " << endl;
    for (int i = 0; i < count; i++)
    {
        cout << contextFile[count];
    }


当我单独打印时,我得到hi,这是正确的输出。

当我通过for循环打印时,我会直接得到================

为什么有区别?

最佳答案

因为你打印

cout << contextFile[count];


一遍又一遍,而不是

cout << contextFile[i];


在循环中,由于未初始化contextFile[count],因此导致未定义的行为。

08-27 22:21