Ниже у меня есть фрагмент кода. В принципе, мне интересно, почему существует разница в выходе, когда я отдельно печатаю contextFile[0]
и contextFile[1]
против цикла for
.Я думаю, что я не совсем понимаю указатели, но почему здесь разница в выходах?
В contextfile.txt
(это значение target_file_name
в данном случае), я следующее:
гикори Dickory точка была маленькая ферма вы чувствуете меня.
Вот код:
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
, я просто получаю прямо ================
.
Почему существует разница?
Только что проверил код снова и мое понимание - есть попытка прочитать final 'contextFile [count]', но на EOF это будет - ну, [моя ссылка не говорит] (http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/) - возможно быть неустановленным, но по крайней мере не полезным значением, поэтому мой (теперь удаленный) комментарий неверен. –