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

Считывание команд из файла и их интерпретация - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ чайник http://www.cyberforum.ru/cpp-beginners/thread673798.html
#include <stdafx.h> #include <iostream> using namespace std; int main() { int x; x=1023; cout <<"Эта программа выводит значение переменной x: " cout<< x;
C++ Подскажите пож. в чем ошибки!? #include "stdafx.h" #include <iostream> #include <iomanip> #include <conio.h> #include <stdio.h> #define L 80 #define STOP "*" using namespace std; struct kvart http://www.cyberforum.ru/cpp-beginners/thread673797.html
Составить програму для решения неравенства C++
вот собственно неравенство x + b |x + a| > c Есть кое какие наработки, но чет не очень получается
C++ Перевести код паскаля в с++
Нужно перевести данный код паскаля в с++. Задание: Найти в строке все заданные последовательности символов и заменить их другой последовательностью. var s_out, s_in, str: string; f : text; i, len : integer; begin assign(f,'c:/text.txt'); reset(f); writeln('What cut? ');
C++ Вычислить значение составной функции http://www.cyberforum.ru/cpp-beginners/thread673785.html
здравствуйте помогите пожалуйста надо вычислить по формуле данное уравнение благодарю за помощь
C++ Инверсия строк Помогите найти ошибку,почему выводиться строки с лишними символами ? #include "stdafx.h" #include <cstdlib> #include <iostream> #include <string> using namespace std; char * reverse(string str) подробнее

Показать сообщение отдельно
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2012, 10:11
Может неправильно понял что нужно, но если значения в строке - это слова, разделённые одним пробелом, то этот код считает слова в строке в вектор строк, т.е., в каждом таком векторе, первый элемент - это имя команды, каждый следующий элемент - имена аргументов. Каждый такой вектор, помещается в вектор векторов. Каждый элемент такого вектора - это строка из файла.
Код
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
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cstdlib>
using namespace std;
 
int main()
{
    
    fstream f("1.txt");
    
    if (!f.is_open()) cout << "Error!" << endl;
    else
    {
        vector <vector <string> > vvec;
    
        string str;
        while (!f.eof())
        {
            getline(f, str);
    
            vector <string> vstr;
            int ind = 0;
            for (int i = 0; i < str.size(); i++)
            {
                string temp;
            
                ind = str.find(' ', i);
                if (ind == -1) temp.assign(str, i, str.size() - i);
                else temp.assign(str, i, ind - i);
                vstr.push_back(temp);
                if (ind == -1) break;
                i = ind;
            }
            vvec.push_back(vstr);
        }
        f.close();
 
        for (int i = 0; i < vvec.size(); i++)
        {
            for (int j = 0; j < vvec[i].size(); j++)
                cout << vvec[i][j] << " ";
            cout << endl;
        }
    }
    
   
   cout << endl;
   system ("pause");
   return 0;
}

Или так, попроще:
Код
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
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cstdlib>
using namespace std;
 
int main()
{
    ifstream f("1.txt");
    if (!f.is_open()) cout << "Error!" << endl;
    else
    {
        vector <vector <string> > vvec;
    
        while (!f.eof())
        {
            vector <string> vstr;
            string temp;
            char ch;
            do
            {
                f.get(ch);
                if (ch != ' ' && ch != '\n') temp.push_back(ch);
                else 
                {
                    vstr.push_back(temp);
                    temp.clear();
                }
                 
            } while (ch != '\n' && !f.eof());
            
            vvec.push_back(vstr);
        }
        f.close();
 
        for (int i = 0; i < vvec.size(); i++)
        {
            for (int j = 0; j < vvec[i].size(); j++)
                cout << vvec[i][j] << " ";
            cout << endl;
        }
    }
    
   cout << endl;
   system ("pause");
   return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru