ОФ
Оксана Фоминова

fstream C++ определение строки

вообщем дали задание в универе:

Дан текстовый файл, каждая строка которого содержит слова, (длиной не
более 12 символов) , разделенных пробелами.
В файле могут быть повторяющиеся слова.
На основе дерева поиска напечатать таблицу перекрестных ссылок.
Таблица представляет собой напечатанный по вертикали отсортированный
по алфавиту список неповторяющихся слов файла с перечисленными в той
же строке номерами строк файла, в которых встречаются эти слова.
Пример:
Номер строки: Текстовый файл:

1 PROGRAM
2 BEGIN FOR DO WRITE
3 BEGIN
4 WHILE WRITE DO
5 IF FOR DO THEN WRITE
6 END
7 END

Таблица:
BEGIN 2 3
DO 2 4 5
END 6 7
FOR 2 5
IF 5
PROGRAM 1
THEN 5
WHILE 4
WRITE 2 4 5

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


Есть ли функция для определения строки, с которой с считываю или мне придется использовать getline() и разбивать строку, полученную после применения getline()???

ЮК
Юлия Костюк

Ни хрена не понял -- слишком много букв. Но основываясь на приведенном примере входных (полагаю, что номера строк не входят в сам входной файл) и выходных данных, сварганил бы на скорую руку что-нибудь типа:

#include
#include
#include
#include
#include
#include

using namespace std;

int main() {
int n = 0;
string s, w;
map > t;
ifstream ifs("in.txt");
for (int n = 1; getline(ifs, s); ++n) {
for (istringstream iss(s); iss >> w; ) t[w].insert(n);
}
for (map >::iterator mit = t.begin(); mit != t.end(); ++mit) {
cout << left << setw(10) << mit->first << right;
for (set::iterator sit = mit->second.begin(); sit != mit->second.end(); ++sit) {
cout << setw(3) << *sit;
}
cout << endl;
}
}



> или мне придется использовать getline() и разбивать строку, полученную после применения getline()?
Да. То что тебе нужно, выделено жирным шрифтом.

Надеюсь, смог помочь 🙂

Похожие вопросы
C++ преобразовать из строки в число
C# работа со строками
Проблема с строками в C++
помогите с C# работа со строками??
помогите с выводом строки C++
Задание по строкам C++. Есть предположения?
C# разделить строку на слова
C++. Переворот строк в матрице.
Работа со строкой в c++
c# надо объяснить строки