Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
#1

Прочитать одной строкой с файла - C++

13.12.2012, 16:50. Просмотров 392. Ответов 9
Метки нет (Все метки)

собственно в этом и вопрос, как считать целой строкой

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
#include <fstream>              
using namespace std;
 
void process_all_transactions
        (
            istream& in, 
            ostream& err,
            double& total_of_spendings,
            int& total_of_shares
 
        );
    
int main ()
{
    int tot_shares       = 0;
    double tot_spendings = 0;
    ifstream infile;
    string my_file;
    string line_transaction;
    string line;
    
    cout<<"This program calculates your profit/loss for all your investments in one share."<<endl;
    cout<<"enter file name"<<endl;
    cin>>my_file;
    infile.open(my_file.c_str());//correct data type from string
    if (!infile)
    {
    cerr<<"could not open file"<<endl;
    return 1;
    }
 
       while(infile>>line_transaction)
       {
        
    
  
cout<<line_transaction<<endl;
 
}
infile.close();
  
    return 0;
}
Вложения
Тип файла: txt my_file.txt (32 байт, 2 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 16:50     Прочитать одной строкой с файла
Посмотрите здесь:

Прочитать файл в обратном порядке т.е. встать в конец файла и прочитать до начальной позиции - C++
подскажите пожалуйста как можно прочитать файл в обратном порядке т.е. стать в конец файла и прочитать до начальной позиции?

Двумерный массив одной строкой. - C++
Здравствуйте. Вот такая программа: На основе исходных массивов A и B (n и m – рабочие размеры массивов) сформировать двумерный массив...

Почему распечатка не заканчивается одной строкой? - C++
#include &lt;cstdio&gt; #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; int main(int nNumberofArgs, char* pszArgs) { ...

Ввод одномерного массива одной строкой - C++
Получил в универе задание где в одной из его частей указано, что нужно ввести размер и елементы массива одной строкой (стандартным вводом)....

Ввод/вычисление/вывод одной программной строкой - C++
Здравствуйте) Есть вопрос, можно ли сделать по функционалу вот это: cin&gt;&gt;p; p*=p; cout&lt;&lt;p; только одной строкой?...

Не могу разобраться с одной строкой кода (cout.precision) - C++
Всего один маленький вопросик. Что делает вот эта строка cout.precision(3); ???? 1) Вычислить и вывести на экран в виде таблицы...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
13.12.2012, 17:12  [ТС]     Прочитать одной строкой с файла #2
пробовала так,не работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
if (!infile)
    {
    cerr<<"could not open file"<<endl;
    return 1;
    }
     else
      while( (!infile.eof()))
       {
         
        getline(cin, line_transaction);
        cout<<line_transaction<<endl;
 
        }
MrGluck
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
13.12.2012, 17:14     Прочитать одной строкой с файла #3
C++
1
2
3
4
5
6
7
8
9
10
std::ifstream ifstext("text.txt");
if (!ifstext)
{
    std::cerr<< "No file\n";
    return 1;
}
std::string text;
ifstext >> std::noskipws; // clears the scipws flag for the str stream
std::copy(std::istream_iterator<char>(ifstext), std::istream_iterator<char>(), 
      std::back_inserter(text) );
letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
13.12.2012, 17:24  [ТС]     Прочитать одной строкой с файла #4
спасибо) но я ничего не понимаю. можно это как-то попроще, чтобы чайнику было понятно...

Добавлено через 1 минуту
без итератора и этого мне неизвестного флага
MrGluck
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
13.12.2012, 17:40     Прочитать одной строкой с файла #5
C++
1
2
3
4
5
6
7
8
9
10
11
std::ifstream ifstext("input.txt");
if (!ifstext)
{
    std::cerr<< "No file\n";
    return 1;
}
std::string text;
ifstext >> std::noskipws; // clears the scipws flag for the str stream
char c;
while (!ifstext.eof() && ifstext >> c)
    text += c;
Без флага функции noskipws результат неверный
letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
13.12.2012, 17:48  [ТС]     Прочитать одной строкой с файла #6
для этого флага надо специальную библиотеку?
я написала так, но ниче не происходит
C++
1
2
3
4
5
6
7
8
9
10
if (!infile)
 
    {
    cerr<<"could not open file"<<endl;
    return 1;
    }
     infile>>std::noskipws;
     char c;
     while(!infile.eof()&& infile>>c)
     line_transaction=line_transaction+c;
MrGluck
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
13.12.2012, 17:49     Прочитать одной строкой с файла #7
letnjaja, а если файл такой:
Код
    abcde fdsh
asd dsgh
asd dshg
fff fffff
1
222 22
letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
14.12.2012, 04:12  [ТС]     Прочитать одной строкой с файла #8
с файла информация считывается, только вот почему то я не могу ее использовать в функции и вывести результат, подкорректируйте кто-нибудь и объясните почему?
как сделать, чтобы сообщения об ошибке записывались в другой файл?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
#include <fstream>              
using namespace std;
 
void process_all_transactions
        (
            istream& in, 
            ostream& err,
            double& total_of_spendings,
            int& total_of_shares
 
        );
 void process_all_transactions(ifstream &in)
{
    int total_of_shares =0      ;
    double total_of_spendings=0 ;
    float number_of_shares=0;
    float total=0;
    string line_transaction;
    string line;
    istringstream iss; // v potok
 
 
    float price_per_share;
 
       while(getline(in,line_transaction))
    {
        iss.clear();
            iss.str(line); //iss chitaet iz peremennoj
           
            iss >> number_of_shares >> price_per_share ;
        cout << number_of_shares<<" "<<price_per_share<<endl;
             cout<<"----------------"<<endl;      
                if(price_per_share <0 ||
         (-number_of_shares>total_of_shares))
                {
                     cout<< "No valid data"<< endl;
                }
                else
                {
                    total_of_shares += number_of_shares;
                    total_of_spendings += number_of_shares*price_per_share;
                }
          
        }
   cout<<total_of_shares<<endl;
   cout<<total_of_spendings<<endl;
}
   
int main ()
{
    ifstream infile;
    string my_file;
    string line_transaction;
    string line;
    float price_per_share;
    int number_of_shares;
    string comment;
    
    stringstream iss;
    
    cout<<"This program calculates your profit/loss for all your investments in one share."<<endl;
    cout<<"enter file name"<<endl;
    cin>>my_file;
    infile.open(my_file.c_str());//correct data type from string
    if (!infile)
    {
    cerr<<"could not open file"<<endl;
    return 1;
    }
     /* while (getline(infile, line))
      {
      iss.clear();
      iss.str(line);
      iss>>number_of_shares>>price_per_share>>comment;
      cout << line << endl;
      }*/
      process_all_transactions(infile);
     
     infile.close();
    
    return 0;
}
MrGluck
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
14.12.2012, 04:22     Прочитать одной строкой с файла #9
как сделать, чтобы сообщения об ошибке записывались в другой файл?
перенаправить поток в ofstream

Добавлено через 4 минуты
C++
1
2
iss.clear();
iss.str(line); //iss chitaet iz peremennoj
C++
1
iss.str(line_transaction);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2012, 04:49     Прочитать одной строкой с файла
Еще ссылки по теме:

Как скопировать массив в вектор одной строкой без использования циклов и алгоритмов STL? - C++
Уважаемые формучане, не подскажете, как скопировать массив в вектор одной строкой без использования циклов и алгоритмов STL?

Сравнение со строкой из файла - C++
Подскажите пожалуйста,как написать сравнение введённой информацией с каждой строкой в имеющемся файле,потому что у меня сравнивается только...

Работа со строкой из файла - C++
Словом текста считается любая последовательность цифр и букв русского алфавита длиной не более 6 символов; между соседними словами - не...

Конструктор со строкой - именем файла - C++
есть класс вида class A { B b; /* ... */ }; а у класса B конструктор B(istream&amp;), дефолтного нет если сделать у А...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
j_runner
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 26
14.12.2012, 04:49     Прочитать одной строкой с файла #10
почему функция не может получить переменные?
Yandex
Объявления
14.12.2012, 04:49     Прочитать одной строкой с файла
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru