Читая файл (ifstream), есть ли способ направить его на создание новой строки? - PullRequest
1 голос
/ 19 декабря 2008

При чтении файла (ifstream), есть ли способ направить его для создания новой строки?

Например, я бы хотел, чтобы ЭТО произошло:

MyFile >> массив [1] >> массив [2] >> епсИ;

Очевидно, что "endl" просто не разрешен. Есть ли другой способ сделать это?

Редактировать --- спасибо за быстрые ответы, ребята!

Из текстового файла я пытаюсь сохранить две строки из этого файла в массивах, а затем сделать то же самое со следующей строкой (или пока не захочу, используя цикл for)

Мне важно использовать строки, поскольку это сделает мою будущую программу более гибкой.

Ответы [ 5 ]

4 голосов
/ 19 декабря 2008

Несколько вариантов:

Вы можете использовать игнорировать.

myfile >> array[1] >> array[2];
myfile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

Или вы можете прочитать каждую строку как поток строк

std::string line;
std::getline(myfile,line);
std::stringstream  stream(line);

stream >> array[1] >> array[2];

Обратите внимание: индексирование массива начинается с 0.

3 голосов
/ 19 декабря 2008

Используйте std::getline, чтобы прочитать строку в поток памяти, а затем получить две строки из этого.

while (cin)
{
  string line;
  getline(cin, line);

  stringstream stream;
  stream << line;

  stream >> array[1]>>array[2];
}
2 голосов
/ 19 декабря 2008

Прочитайте ваши две вещи, затем позвоните myfile.ignore(8192, '\n')

1 голос
/ 19 декабря 2008

Понятия не имею, что означает этот вопрос. Вот простой способ прочитать все строки файла в вектор строк. Возможно, будет проще сделать то, что ты хочешь сделать, если сделаешь это сначала.

std::vector<std::string> lines;

std::string line;
while (std::getline(myFile, line))
    lines.push_back(line);

Теперь вы можете сказать lines[4], чтобы получить пятую строку, или lines.size(), чтобы узнать, сколько было строк.

0 голосов
/ 19 декабря 2008

Это должно работать:

stringstream stream;
string sLine;
int iLine;

while (cin)
{
  getline(cin, sLine);

  stream << sLine;
  stream >> data[iLine][0] >> data[iLine][1];
}

Индивидуальная версия более раннего ответа.

...