У меня проблема с fstream на C++. Если я открываю файл, например test.txt, и я хочу прочитать каждую строку, проверяя, является ли первое значение, которое я принимаю, не строка. Если это не строка, то поэтому строка формируется численными значениями. Если я проверю первое, я потерял первое значение, которое мне нужно. Если я хочу вернуться к началу строки, как я могу это сделать? Я пробовал с seekg(*,ios::cur)
, но я не знаю, сколько позиций я должен вернуться, чтобы вернуться к началу линии. thank youВозврат к началу строки входного файла, C++
ответ
Если вы правильно задаете вопрос, вы хотите прочитать первое слово в каждой строке и затем сделать что-то с этой информацией и снова вернуться к первому символу в строке.
ifstream fin;
string text;
fin.open("test.txt");
fin >> text;
text.size()
даст вам длину первого слова, так как оператор >> читает только до первого пустого пространства. Итак, используя эту информацию, вы теперь знаете, сколько символов нужно возвращать.
Что вы хотите сделать, так это то, что вы читаете строку в строке, затем можете вырезать то, что вам нужно, используя substr
, например, проверьте, является ли это числом, а затем прочитайте следующую строку.
#include <fstream>
#include <string>
std::ifstream file("file.txt");
std::string line;
while(std::getline(file , line))
{
line.substr(0 , 2) // for example the first 2 positions
// do your checks
}
Существует также подход с использованием токенов, если вы знаете, что каждая строка содержит определенную не меняющуюся величину значений. Если вы предоставите более подробную информацию о фактических данных в файле, я могу прояснить это для вас.
Также я рекомендую проверить, является ли строка пустой, возможно, даже обрезать ее раньше, чтобы убедиться, что у вас нет пустых строк или проверка размера строки, которую вы не пытаетесь вырезать, Там.
Вы можете сделать чек перед чтением строки.
ifstream foo("bar.txt");
if(isdigit(foo.peek())){
// You're getting a number
}else{
// You're getting a string
}
peek
не удаляет символ, чтобы вы могли продолжить, как будто ничего не было прочитано.
- 1. Возврат к началу цикла C
- 2. Возврат к началу кода
- 3. Возврат к началу цикла for в C
- 4. Visual Basic - Возврат к началу
- 5. Возврат к началу цикла java
- 6. Подготовить "!" к началу первой строки файла
- 7. Возврат к началу потока после прохождения по нему в C++
- 8. Возврат к началу исходных данных в excel
- 9. Перейти к началу файла
- 10. Иск к началу файла
- 11. Возврат терминального курсора к началу строки с включенной оберткой
- 12. Добавление к началу строки
- 13. C#: предварительная подготовка к началу файла
- 14. Возврат к началу промежуточной петли while?
- 15. git log report возврат к началу проекта
- 16. Чтение строки входного файла
- 17. Подведите курсор к началу файла?
- 18. Соответствует началу файла или новой строки (Ragel)
- 19. Как остановить «указатель файла» от возврата к началу файла C++?
- 20. Возврат два изображения простирается от входного файла
- 21. Возврат следующей строки файла в C
- 22. Python Строки анализа входного файла
- 23. Получить имя файла и добавить к началу строки
- 24. C# вернуться к началу программы
- 25. Командная строка MacOS переходит к началу строки
- 26. Разбиение строки из входного файла
- 27. Тип входного типа Назад с историей и к началу
- 28. Как перейти от конца файла к началу в C++
- 29. Как вернуться к началу файла после достижения .eof() в C++?
- 30. Вернуться к началу/началу в приложении консоли C#