2014-10-22 3 views
-1

Мне удалось написать код, который можно читать из TXT-файла, однако я хочу, чтобы моя программа читала только важные данные.Как отклонять символы/целые числа от ввода текста из файла?

Например, если мой текстовый файл имел следующие данные:

Name= Samuel 
Favourite colour= Green 
Age= 24 
Gender= Male 

Я хочу, чтобы моя программа просто читать, и игнорировать все до «=»

Samuel 
Green 
24 
Male 

Я посмотрел в .substr(), однако вам необходимо знать точное положение знака =.

Это мой код, и он не работает

while (getline (open_file,line)){ 
    for (int i=0; i<line.length(); i++){ 
    if (line == "="){ 
     cout << " " + (rest of the line; 
    } 

Я бы очень признателен, если кто-то может помочь мне.

+1

так почему бы не найти расположение '='? например strstr()? –

+0

@MarcB, потому что = находится в другом положении в каждой строке, и когда пользователь открывает файл, программа не знает, где она находится. Знак = не будет находиться в одной и той же позиции каждый раз, когда – user4167396

+0

- это именно то, для чего предназначены эти функции. msgstr "найти подстроку в строке". найдите '=', получите его местоположение, а затем используйте его для извлечения подстроки. –

ответ

0

Наиболее эффективным способом чтения в файлах данных является чтение строки за раз в строковой переменной. Затем извлеките важные части.

Ваш файл данных выглядит она имеет формат:

<name> = <value> 

Я предлагаю вам извлечь как имя и значение в виде строк (например, подстроки), то вы можете передать исходные данные, в его первоначальный вид, к другим функциям. Пусть другие функции беспокоятся о преобразовании в целые числа или другие типы данных.

Поле можно найти, выполнив поиск '=' и запомнив положение '='. Затем используйте метод подстроки и извлеките из начала строки в позицию до '='.

Значение - подстрока, которая начинается после позиции '=' до конца строки.

Я позволю вам посмотреть функции std :: string и как их использовать. Я не хочу давать вам код, потому что вы не будете учиться так много (например, как искать функции).

См. Также std::getline.

Смежные вопросы