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

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

Восстановить пароль Регистрация
 
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
09.11.2010, 19:33     Число в строку #1
Как перевести число в строку не используя 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++ Программа на С, которая вводит число типа int с клавиатуры, преобразует ее в строку (str), выводит на дисплей число и строку.
C++ Преобразовать строку->число->строку
C++ Дано целое число , лежащие в диапазоне от -999 до 999.Вывести строку - словесного описание данного числа вида "отрицательное двухзначное число", "отри
Необходимо вывести строку prime, если число простое, или composite, если число составное C++
Сравнить число и строку C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 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
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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     Число в строку
Ответ Создать тему
Опции темы

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