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

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

Войти
Регистрация
Восстановить пароль
 
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
#1

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

09.11.2010, 19:33. Просмотров 506. Ответов 2
Метки нет (Все метки)

Как перевести число в строку не используя itoa и фишек из нового стандарта типа stoi и т.п. Возможно-ли это через stringstream?

Добавлено через 5 минут
Кажись вопрос отпал.
C++
1
ost.str()
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2010, 19:33     Число в строку
Посмотрите здесь:

Преобразовать число в строку/строкук в число C++
C++ Как преобразовать число в строку
Как записать число в строку? C++
Строку в число C++
Пишу конвертер: число в строку C++
C++ Преобразовать строку->число->строку
Как записать число в строку? C++
C++ Сконвертировать строку в число
Сравнить число и строку C++
Преобразование число в строку C++
Как перевести строку в число? C++
Конвертировать строку с датой и временем в число секунд и наоборот - число секунд в дату и время C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2842 / 1779 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
09.11.2010, 19:35     Число в строку #2
Так ?
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <sstream>
 
int main(){
        int i = 1;
        std::ostringstream ost;
        ost << i;
        std::cout << ost.str() << std::endl;
        std::cin.get();
        return 0;
}
Не успел)
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
09.11.2010, 21:09  [ТС]     Число в строку #3
Черт. Совсем жутко туплю. Т.к. тот вопрос связан с этим.
Мне нужно заменить пробел на его порядковый номер. Через итератор не выходит, растет бесконечно что вообщем-то логично. Через индексацию съедает энное кол-во пробелов.
Сейчас при 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;
}
Yandex
Объявления
09.11.2010, 21:09     Число в строку
Ответ Создать тему
Опции темы

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