Чтение всей строки из файла в C ++ - PullRequest
2 голосов
/ 02 декабря 2011

Я работаю над программой на c ++, и мне нужно прочитать всю строку текста из файла. Файл содержит адрес в одной из строк, таких как «123 Easy Ave», который должен быть вытянут в одну строку или символ. Вот код, который у меня есть:

Файл данных:

Matt Harrold
307C Meshel Hall
1000 .01 4

Данные состоят из имени и фамилии, которые становятся CustomerName, следующая строка - это адрес, который должен заполнить Address, затем три числа: принцип, InterestRate, Years.

код:

float InterestRate = 0;
int Years = 0;
char Junk [20];
int FutureValue;
float OnePlusInterestRate;
int YearNumber;
int count = 0;
char CustomerName;
string Address;
int * YearsPointer;


       CustomerFile >> CustomerName
                >> Address
                >> Principle
                >> InterestRate
                >> Years;

Прямо сейчас это только тянет в "103C" и останавливается в месте ... Помощь очень ценится!

Ответы [ 2 ]

3 голосов
/ 02 декабря 2011

используйте std::getline из заголовка <string>.

3 голосов
/ 02 декабря 2011

Редактировать: в ответ на отзыв о моем вопросе я отредактировал его, чтобы использовать более подходящее std::getline вместо std::istream::getline.И того, и другого достаточно, но std::getline лучше подходит для std::string с, и вам не нужно беспокоиться об указании размера строки.

Используйте std::getline() из <string>.

Здесь есть хороший справочник и пример: http://www.cplusplus.com/reference/string/getline/.

Вам также нужно быть осторожным, комбинируя оператор извлечения (>>) и getline.Верхний ответ на этот вопрос ( cin >> не работает с getline () ) кратко объясняет, почему их не следует использовать вместе.Короче говоря, вызов cin >> (или любого используемого вами входного потока) оставляет новую строку в потоке, которая затем перехватывается getline, давая вам пустую строку.Если вы действительно хотите использовать их вместе, вы должны позвонить std::istream::ignore между двумя вызовами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...