Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2012, 09:08   #1
mazzahaker
Пользователь
 
Регистрация: 04.12.2011
Сообщений: 23
По умолчанию Как считать строчку до определенного символа?

Код:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
 
using namespace std;
 
int main()
{
		int ass=0, ki=0, k=0, KolStr=0, KolSym=0;
		cout << "KolStr, KolSym";
		cin >> KolStr >> KolSym;
        vector<string> arr;
        vector<string>::iterator i;
        ifstream fin;
        string str;
        
        fin.open("in.txt");
        if ( !fin.is_open() ) 
		{
                cerr << "Can't open file" << endl;
                return 1;
        }
        
  //      while ( !fin.eof() )
		for (int k=0; k<KolStr; k++)
		{
                getline(fin, str);
                arr.push_back(str);
        }
        
        fin.close();
        
        for ( i = arr.begin(); i != arr.end(); i++ )
                cout << *i << endl;
                
        cin >> ass;
}
Могу считать первые n строк, а в строке первые N символов как сделать?
fin.getline не хочет так как строка типа string
mazzahaker вне форума Ответить с цитированием
Старый 29.03.2012, 14:37   #2
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Используйте функцию fgets.
Прототип:
char * fgets ( char * str, int num, FILE * stream );
Хэдэр - cstdio
Описание:
функция считывает из файлового потока stream num-1 символов в строку str. Функция возвращает str.
rmv240899 вне форума Ответить с цитированием
Старый 29.03.2012, 17:37   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

По-моему, так просто в строку не считать, все равно придется в буфер char-овский сначала. Для этого пойдет
fin.get(buf, N + 1);

rmv240899, не надо советовать такие вещи. Си и C++ - языки не то чтобы разные, но у них есть серьезные различия в философии и наборе инструментов. Сишные функции вы к файловым потокам все равно не прикрутите. Вы пытаетесь навязать философию Си коду, в котором активно используются плюсы, и это в любом случае ни к чему хорошему не приведет. Я бы посоветовал вам сначала хотя бы обзорно изучить C++, прежде чем давать советы по его поводу. Иначе они, хотя и могут быть актуальны для Си, в плюсах окажутся исключительно вредными. С уважением.
P.S. Нашел подходящее сравнение. Использование fgets в данном случае выглядит примерно как совет запрягать в телегу (условно говоря, по лошадям не спец) ломовика-трехлетку, мол, самое то (положим, это и в самом деле так); при этом тот, кому вы это советуете, пытается определить, как ему двигатель в его народном автомобиле починить. Можно, конечно, и в авто запрячь лошадь, и оно даже поедет, но это точно не будет оптимальным решением...
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же

Последний раз редактировалось Гром; 29.03.2012 в 17:43.
Гром вне форума Ответить с цитированием
Старый 29.03.2012, 18:02   #4
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

getline с 3-м параметром
http://www.cplusplus.com/reference/string/getline/

простите, отвечал на вопрос в заголовке.
onewho вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вставить строчку в контент после сотого символа veleg PHP 4 20.10.2011 22:23
Считать строчку из файла erro Общие вопросы C/C++ 11 08.03.2011 16:49
Как в Excel удалить\копировать фрагмент текста до определенного символа? Vatrolf Microsoft Office Excel 2 15.07.2010 14:24
Как добраться до определенного символа в Edit Ivanko Помощь студентам 2 08.02.2010 11:49
считать поочередно каждую строчку и записать в батовский файл elplado Паскаль, Turbo Pascal, PascalABC.NET 3 16.11.2008 17:29