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

Число в строку - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ программный модуль для тестирования знаний http://www.cyberforum.ru/cpp-beginners/thread188588.html
привет)нужнапрограмма...на С++ Разработка программного модуля для тестирования знаний. Программный мо- дуль должен обеспечивать возможность изменения вопросов и ответов. В про- граммном модуле рекомендуется применение структурных массивов. Реализо- вать обработку исключительных ситуаций.
C++ TinyXml - добавление данных в конец xml файла Есть рабочая функция, которая принимает данные и добавляет их в конец файла. int AddToXML(const char *filename,const XMLDATA data, int num, int mode) { TiXmlDocument doc; if(!doc.LoadFile(filename)) return 0; TiXmlElement *elem; TiXmlElement *iter; iter = new TiXmlElement("Iteration"); if(mode==ONLY_RT || mode==ALL_XMLDATA) http://www.cyberforum.ru/cpp-beginners/thread188585.html
Формирование вектора C++
Посылаю Великий поклон участникам данного форума и отдельно ответившим!!! Задача. Дана матрица целых чисел размерностью 4 на 6. Сформировать вектор из произведений элементов каждого столбца этой матрицы. Вот есть ответ, но препод говорит, что неверный. В чем состоят ошибки? Помогите ответом... #include <math.h> void tred2(float **a, int n, float *d, float *e) { int l,k,j,i; float...
Что вы думаете о C Sharp C++
Скажите, пожалуйста, тяжелый ли язык C Sharp ? Что лучше С Sharp или C++ biulder во время трудоустройства???Как вы думаете ????
C++ Задачи C++ http://www.cyberforum.ru/cpp-beginners/thread188526.html
4. 1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел. 2) Распечатать полученный массив. 3) Удалить последний элемент равный 0. 4) Добавить после элемента массива с заданным индексом элемент со значением 100. 5) Распечатать полученный массив. 5. Написать процедуру обмена столбца и строки двухмерного массива. С ее помощью поменять местами те строки...
C++ Массив указателей на функции члены К примеру вот такой код. #include "stdafx.h" #include <stdio.h> class test { public: struct s { подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
09.11.2010, 21:09  [ТС]
Черт. Совсем жутко туплю. Т.к. тот вопрос связан с этим.
Мне нужно заменить пробел на его порядковый номер. Через итератор не выходит, растет бесконечно что вообщем-то логично. Через индексацию съедает энное кол-во пробелов.
Сейчас при 56 пробелах он выводит числа до 33.
Строка в файле такая.
Код
                                                         f
Как быть-то тут?
C++
1
2
3
4
5
6
7
8
9
10
11
        for(size_t i=0; i!=Str.size(); ++i)
        {
            if(Str[i]==' ')
            {
                std::string Stri;
                std::ostringstream ost;
                ost<<spacecnt;
                Str.replace(i, ost.str().size(), ost.str());
                ++spacecnt;
            }
        }
Добавлено через 3 минуты
Тфу. Надо думать больше. Решается так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
        std::getline(ifs, Str);
        for(size_t i=0; i!=Str.size(); ++i)
        {
            if(Str[i]==' ')
            {
                std::string Stri;
                std::ostringstream ost;
                ost<<spacecnt;
                Str.replace(i, 1, ost.str());
                ++spacecnt;
            }
        }
Добавлено через 30 минут
Тащем-та доделал. Может кому пригодится.
Суть:
Код
Программа должна считывать текст с первого файл(несколько строк) подсчитывать количество слов что заканчиваются на abc и выводить во второй файл кол. слов и строки что начинаются с знака "=" или " =".
а и еще кажный пробел в тексте менять на его номер. типа 1 второй -2
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
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
 
int main()
{
    std::string Str;
    std::string InpFName;
    std::string OutFName;
    std::cout<<"Enter input file name\n";
    std::getline(std::cin, InpFName);
    std::ifstream ifs(InpFName.c_str());
    if(!ifs)
    {
        std::cerr<<"Error! Can`t open file "<< InpFName <<'\n';
        return 1;
    }
    std::cout<<"Enter output file name\n";
    std::getline(std::cin, OutFName);
    std::ofstream ofs(OutFName.c_str());
    if(!ofs)
    {
        std::cerr<<"Error! Can`t open file "<< OutFName <<'\n';
        return 1;
    }
    const std::string FindStr="abc";
    int spacecnt=1;
    int abccount=0;
    while(!ifs.eof())
    {
        if(!ifs.eof())
        {
            std::getline(ifs, Str);
            std::string Temp;
            std::istringstream Ist(Str);
            while(Ist>>Temp)
            {
                std::string TempStr;
                TempStr.insert(TempStr.begin(), Temp.end()-3, Temp.end());
                if(TempStr==FindStr)
                    abccount++;
            }
            if((*Str.begin()=='=')||(*Str.begin()==' '&&*(Str.begin()+1)=='='))
            {
                ofs<<Str<<'\n';
            }
        }
    }
    ifs.seekg(0, std::ios::beg);
    while(!ifs.eof())
    {
        std::getline(ifs, Str);
        for(size_t i=0; i!=Str.size(); ++i)
        {
            if(Str[i]==' ')
            {
                std::string Stri;
                std::ostringstream ost;
                ost<<spacecnt;
                Str.replace(i, 1, ost.str());
                ++spacecnt;
            }
        }
        ofs<<Str<<'\n';
    }
    ofs<<"Numb of abc: "<<abccount<<'\n';
    return 0;
}
Добавлено через 44 минуты
А так будет несколько безопаснее.

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
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
 
int main()
{
    std::string Str;
    std::string InpFName;
    std::string OutFName;
    std::cout<<"Enter input file name\n";
    std::getline(std::cin, InpFName);
    std::ifstream ifs(InpFName.c_str());
    if(!ifs)
    {
        std::cerr<<"Error! Can`t open file "<< InpFName <<'\n';
        return 1;
    }
    std::cout<<"Enter output file name\n";
    std::getline(std::cin, OutFName);
    std::ofstream ofs(OutFName.c_str());
    if(!ofs)
    {
        std::cerr<<"Error! Can`t open file "<< OutFName <<'\n';
        return 1;
    }
    const std::string FindStr="abc";
    int spacecnt=1;
    int abccount=0;
    while(!ifs.eof())
    {
        std::getline(ifs, Str);
        if(Str.empty())
            break;
            if(!ifs.eof())
            {
                std::string Temp;
                std::istringstream Ist(Str);
                while(Ist>>Temp)
                {
                    std::string TempStr;
                    TempStr.insert(TempStr.begin(), Temp.end()-3, Temp.end());
                    if(TempStr==FindStr)
                        abccount++;
                }
                if((*Str.begin()=='=')||(*Str.begin()==' '&&*(Str.begin()+1)=='='))
                {
                    ofs<<Str<<'\n';
                }
            }
    }
    ifs.seekg(0, std::ios::beg);
    while(!ifs.eof())
    {
        std::getline(ifs, Str);
        if(!ifs.eof())
        {
            for(size_t i=0; i!=Str.size(); ++i)
            {
                if(Str[i]==' ')
                {
                    std::string Stri;
                    std::ostringstream ost;
                    ost<<spacecnt;
                    Str.replace(i, 1, ost.str());
                    ++spacecnt;
                }
            }
            ofs<<Str<<'\n';
        }
    }
    ofs<<"Numb of abc: "<<abccount<<'\n';
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru