2014-11-28 3 views
0

У меня есть задача написать функцию, которая читает строку из текстового файла (переименована в .dat, однако она содержит только текст), но у меня нет вариантов для решение из следующих пунктов:Чтение строки из файла: Невозможно использовать getline()

  1. Я использую Borland C++ Version 5.02, и нет, я не могу загрузить другой компилятор, потому что я не имею права администратора на моем ноутбуке, и парень, который не имеет необходимый пароль Isnt там до следующего неделю.

  2. компилятор не принимает using namespace std, а также оно не принимает getline(), независимо от того, если string и iostream включены или нет.

Я пытаюсь найти решение или, по крайней мере, самый крошечный подход, но я не могу его найти.

Так что мой вопрос: Как читать строки из простого текстового файла без использования getline() (cin.getline работы, те из string или fstream оленьей кожи)? Текстовый файл содержит несколько строк, таких как:

1234; 12.05.03; 08: 44: 23; XY12-AB; А1-12; Таймаут

2345; 12.05.03; 09: 04: 34; XY1-CD, A22-9, Соединение отклонено

И цифры/буквы между ; необходимостью для хранения в переменных, чтобы с ними можно было работать.

Я не прошу вас написать свой код, но я действительно расстроен, и мой инструктор не помогает.

Live long and prosper, Me.

+0

«Я МОЖЕТ скачать другой компилятор, потому что у меня нет администраторов» - вам не нужны права администратора. –

+0

Хорошо, когда я хочу установить этот компилятор. Все наши (я и другие ученики) ноутбуки были настроены, поэтому мы не можем что-то установить без администратора. (Чтобы удостовериться, что nobodys собирается запутаться и случайно установить вредоносное ПО) – Kampfkeksgeschwader

+0

Ищите, и вы найдете: http://cygwin.com/faq.html#faq.setup.noroot – marc

ответ

0

http://www.cplusplus.com/reference/string/string/getline/

Если вы не можете использовать (что вы действительно не должны)

using namespace std 

Затем обратитесь к пространству имен с :: оператором
Например:

std::string 

Теперь попробуйте напишите свой собственный код, используя std :: и comment, если вы все еще не можете это сделать.

Кроме того, существует много других опций, чем std :: getline(), чтобы читать строку текста.

Ref: Read file line by line

+0

Компилятор не распознает sstream. Пока я не могу попросить моего администратора разрешить установку визуальной студии на следующей неделе, я застрял с Borland. – Kampfkeksgeschwader

0

Вариант 1:

Попробуйте использовать fgets С() функции.

Вариант 2: Вы упомянули, что cin.getline() работает. Вы можете freopen stdin с входным файлом, а затем cin укажет на упомянутый файл. После этого.getline() будет читать из файла:

Даунсайд: после freopen вы не сможете принимать какие-либо данные от пользователя.

Пример: обратите внимание, что это не было проверено с использованием g ++, но я думаю, что он также должен работать с Borland.

#include <iostream> 
#include <stdio.h> 

int main() { 
     char buf[1000]; 
     freopen("somefile.dat", "r", stdin); 
     while (cin.getline(buf, sizeof(buf)).good()) { 
       // Now buf contains a line 
       // Do something with it 
     } 
     return 0; 
} 
Смежные вопросы