C++ первый cout не будет напечатан
Как вы можете видеть, у меня есть cout здесь до начала цикла. Seekg начинается в начале, и первое слово в txtfile - "Hello". Но это не распечатывает его (первый кут).
Когда я удаляю цикл while, это не проблема, первое слово включается в вывод.
Первый "кут", не должен ли он быть распечатан независимо от того, что будет после него? Как это возможно, что следующие строки кода (в этом случае) влияют на предыдущий "cout" над ним?
int main()
{
string a;
ifstream myfile;
myfile.open("test.txt");
myfile.seekg(0);
getline(myfile,a);
cout << a << endl;
int z = 0;
while( a != "x" ) {
myfile.seekg(z);
getline(myfile,a);
z += a.size() + 2;
cout << a << endl;
}
}
Также я должен упомянуть, что файл начинается с "привет", И содержит 600 новых строк и слово в каждой новой строке. Последняя строка содержит "х".
[РЕДАКТИРОВАТЬ]
Вот еще один пример. Я верю, что это будет полезно. Это мой код сейчас:
int main() {
string a;
ifstream myfile;
int newpos = 0;
myfile.open("example.txt");
myfile.seekg(newpos);
getline(myfile,a);
while (a != "x") {
myfile.seekg(newpos);
getline(myfile,a);
cout << a << endl;
newpos += a.size() + 2;
}
}
Это мой текстовый файл:
hello
johan
nils
erik
john
x
Вывод точно такой, как он выглядит в текстовом файле выше.(Пока все хорошо).
НО, затем я добавляю около 600 новых имен в список / текстовый файл (та же структура, что и выше, без изменений, просто добавляются новые имена). Только один "привет" наверху, чтобы я мог отслеживать начало, и один х в конце.
Это по-прежнему работает с около 100 новых имен, привет все еще печатается в начале. Но когда я добавлю около 600 новых имен, привет не будет включен (самый первый cout). Это почему?
1 ответ
Но когда я добавлю около 600 новых имен, привет не будет включен (самый первый cout).
Это почему?
Выглядит как твой Screen Buffer Size
не был достаточно большим, чтобы показать все строки буфера. Поэтому, когда количество напечатанных строк превышает определенную высоту, консоль начинает игнорировать ранее напечатанные строки, в результате чего вы думаете, что они не распечатали их все.
Так как вы используете Windows, вы можете попробовать увеличить его так
Для всех консольных приложений
- Щелкните правой кнопкой мыши заголовок консоли и выберите "По умолчанию".
- перейти на вкладку Layout
- Под размером буфера экрана увеличьте
Height
к (то есть9001
) - Нажмите OK, затем перезапустите консоль
Для конкретного приложения
- Щелкните правой кнопкой мыши заголовок консоли и выберите " Свойства".
- перейти на вкладку Layout
- Под размером буфера экрана увеличьте
Height
к (то есть9001
) - Нажмите ОК.
Обратите внимание, что высота по умолчанию в большинстве операционных систем Windows 9001
,