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

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

Войти
Регистрация
Восстановить пароль
 
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
#1

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

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

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

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

Программа на С, которая вводит число типа int с клавиатуры, преобразует ее в строку (str), выводит на дисплей число и строку. - C++
Задача направленная на усвоение следующих понятий: прототип функции; заголовок функции; тело функции; параметры, принимаемые функцией...

Преобразовать число в строку/строкук в число - C++
Обьясните, как преобразововать число в строку и наоборот. Искал в гугле, но конкретного ответа так и не получил (все, что узнал, что есть...

Преобразовать строку->число->строку - C++
Всем доброго времени суток! Скоро будет экзамен по программированию.С++ начали изучать в конце семестра. В билете задача написать программу...

Конвертировать строку с датой и временем в число секунд и наоборот - число секунд в дату и время - C++
Здравствуйте. Подскажите пожалуйста есть строки типа char/string: 2015.04.30 06:30 как перевести данное время в число секунд. И...

Строку в число - C++
Есть фаил с выражением, например (22.3+69-69*98+23.5) Как считатать из него так, чтоб отделять отдельна целиком числа, отдельна знаки?

Сконвертировать строку в число - C++
подскажите пожалуйста, вот я беру из текстового файла число и оно у меня получается типа стринг, а его можно как-то зделать флоат или там...

Сравнить число и строку - C++
Помогите! using namespace std; string s; s=Edit1->Text.t_str(); int x; if( s == x) { ShowMessage("...

Преобразование число в строку - C++
Привет ребята, хочу спросить как с помощь printf число можно переобразовать в строку? Например через itoa это можно сделать вот так: ...

Пишу конвертер: число в строку - C++
Пишу простенький конвертер, переводящий числа в слова. Проектирование на начальном этапе находится, поэтому функции постепенно дорабатываю....

Как преобразовать число в строку - C++
Здравствуйте! У меня такой вопрос: Нужно выводить на экран числа.Функция принимает указатель на строку Font->DrawTextA(NULL, ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
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
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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;
}
Ответ Создать тему
Опции темы

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