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

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

Восстановить пароль Регистрация
 
letnjaja
 Аватар для letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
13.12.2012, 16:50     Прочитать одной строкой с файла #1
собственно в этом и вопрос, как считать целой строкой

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 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
letnjaja
 Аватар для 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
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,416
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
 Аватар для letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
13.12.2012, 17:24  [ТС]     Прочитать одной строкой с файла #4
спасибо) но я ничего не понимаю. можно это как-то попроще, чтобы чайнику было понятно...

Добавлено через 1 минуту
без итератора и этого мне неизвестного флага
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,416
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
 Аватар для 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
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,416
13.12.2012, 17:49     Прочитать одной строкой с файла #7
letnjaja, а если файл такой:
Код
    abcde fdsh
asd dsgh
asd dshg
fff fffff
1
222 22
letnjaja
 Аватар для 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
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,416
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     Прочитать одной строкой с файла
Еще ссылки по теме:

C++ Прочитать из файла
Не могу разобраться с одной строкой кода (cout.precision) C++
Работа со строкой из файла C++

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

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

Текущее время: 02:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru