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

Преобразуем int в string - C++

Восстановить пароль Регистрация
 
EfimenkoFedor
0 / 0 / 1
Регистрация: 29.09.2012
Сообщений: 59
01.10.2013, 17:44     Преобразуем int в string #1
Скажите, пожалуйста, почему здесь ошибка
C
1
2
3
4
5
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;
C
1
2
3
4
5
6
7
8
string convertInt(int number)
{
    string str;
    char buffer [33];
    itoa(number, buffer, 10);
    str = (const char*) buffer;
    return str;
}
Миниатюры
Преобразуем int в string  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2013, 17:44     Преобразуем int в string
Посмотрите здесь:

C++ Int to string
C++ из int в string?
int to string C++
C++ int в string
C++ из int в string
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
01.10.2013, 17:48     Преобразуем int в string #2
Нужно подключить библиотеку в к-рой объявлена функция itoa
#include <что-то там>
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
01.10.2013, 17:51     Преобразуем int в string #3
попробуйте так
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <string>
#include <sstream>
 
...
std::string NumberToString(int Value)
    {
        std::stringstream StrStream;
        StrStream<<Value;
        std::string ValueAsString;
        StrStream>>ValueAsString;
        return ValueAsString;
    }
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
01.10.2013, 17:52     Преобразуем int в string #4
itoa() не айс (и не стандарт). Лучше std::to_string (C++11) или std::stringstream
EfimenkoFedor
0 / 0 / 1
Регистрация: 29.09.2012
Сообщений: 59
01.10.2013, 17:55  [ТС]     Преобразуем int в string #5
Цитата Сообщение от aLarman Посмотреть сообщение
попробуйте так
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <string>
#include <sstream>
 
...
std::string NumberToString(int Value)
    {
        std::stringstream StrStream;
        StrStream<<Value;
        std::string ValueAsString;
        StrStream>>ValueAsString;
        return ValueAsString;
    }
Summ2 - string
Миниатюры
Преобразуем int в string  
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
01.10.2013, 17:57     Преобразуем int в string #6
aLarman,
C++
1
return StrStream.str();
Добавлено через 1 минуту
Цитата Сообщение от EfimenkoFedor Посмотреть сообщение
Summ2 - string
а Summ2[i] - char. Уберите квадратные скобки.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
01.10.2013, 18:13     Преобразуем int в string #7
C++
1
2
sprintf (buffer, "%u", Value);
return std::string (buffer);
EfimenkoFedor
0 / 0 / 1
Регистрация: 29.09.2012
Сообщений: 59
01.10.2013, 18:17  [ТС]     Преобразуем int в string #8
А почему это неправильно работает
C
1
2
3
4
5
6
7
8
9
10
string Summ2(string Number_1, string Number_2){
    
    string Summ;
    
    for(int i=50; i>=0; i--){
        Summ[i] = '2';
    }
    
    return Summ;
}
Я хочу чтобы на выходе была строка из 51 символа "2"

но на выходе
C
1
2
3
AnswerNumber = Summ2(FirstNumber, SecondNumber);
    
    printf("Итог\n%s\n", AnswerNumber.c_str());
Я получаю
Код
222222222222222222222221
Это явно меньше 51 символа и еще 1 в конце почему-то
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
01.10.2013, 18:19     Преобразуем int в string #9
novi4ok, зачем мешать C/C++, и почему %u?

Добавлено через 2 минуты
Цитата Сообщение от EfimenkoFedor Посмотреть сообщение
А почему это неправильно работает
Потому что Вы неправильно написали. Если нужно создать std::string из нескольких одинаковых символов, используйте соответствующий конструктор:
C++
1
string (size_t n, char c);
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
01.10.2013, 18:20     Преобразуем int в string #10
Цитата Сообщение от Tulosba Посмотреть сообщение
novi4ok, зачем мешать C/C++, и почему %u?
0. тема - в "с++ > c++ для начинающих". sprintf - уже нелегально?
1. с прямым углом спутал.
EfimenkoFedor
0 / 0 / 1
Регистрация: 29.09.2012
Сообщений: 59
01.10.2013, 18:25  [ТС]     Преобразуем int в string #11
Цитата Сообщение от Tulosba Посмотреть сообщение
Потому что Вы неправильно написали. Если нужно создать std::string из нескольких одинаковых символов, используйте соответствующий конструктор:
C++
1
string (size_t n, char c);
Не ну одинаковые символы это я для примера написал, там будут всегда символы цифр, но не всегда одинаковые
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
01.10.2013, 18:38     Преобразуем int в string #12
Цитата Сообщение от novi4ok Посмотреть сообщение
0. тема - в "с++ > c++ для начинающих". sprintf - уже нелегально?
Имхо, мешать сишные строки с плюсовыми, если этого можно избежать, не стоит.
Цитата Сообщение от novi4ok Посмотреть сообщение
1. с прямым углом спутал.
Щито?

Добавлено через 1 минуту
EfimenkoFedor, если нужно писать в std::string по индексу, нужно сначала позаботиться о том, что строка содержит достаточную длину.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
01.10.2013, 18:55     Преобразуем int в string #13
Цитата Сообщение от Tulosba Посмотреть сообщение
Имхо, мешать сишные строки с плюсовыми, если этого можно избежать, не стоит.
а то что?
Цитата Сообщение от Tulosba Посмотреть сообщение
Щито?
думал, всякий знает. погуглИ.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
01.10.2013, 19:06     Преобразуем int в string #14
Цитата Сообщение от novi4ok Посмотреть сообщение
думал, всякий знает. погуглИ.
Анекдот знаю. Но такого ответа вместо: "Ошибся. Конечно же надо %d" не ожидал.
Цитата Сообщение от novi4ok Посмотреть сообщение
а то что?
Стиль должен быть един. Вот что.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
01.10.2013, 19:10     Преобразуем int в string #15
стиль не этим определяется. так можно договориться до того, что всего, что допустимо в сях, нужно избегать с плюсах. тогда, правда, кроме "стиля" ничего не останется.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11820 / 6799 / 769
Регистрация: 27.09.2012
Сообщений: 16,874
Записей в блоге: 2
Завершенные тесты: 1
02.10.2013, 03:46     Преобразуем int в string #16

Не по теме:

Цитата Сообщение от Algoritmer Посмотреть сообщение
Нужно подключить библиотеку в к-рой объявлена функция itoa
#include <что-то там>
прям в "библиотеке" объявлена?



Добавлено через 2 минуты
Цитата Сообщение от novi4ok Посмотреть сообщение
а то что?
возможно тогда не возникнет таких ситуаций:
C++
1
2
3
4
5
    string Summ;
    
    for(int i=50; i>=0; i--){
        Summ[i] = '2';
    }
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.10.2013, 09:56     Преобразуем int в string #17
Цитата Сообщение от Croessmah Посмотреть сообщение
возможно тогда не возникнет таких ситуаций
Дело, кстати, не только в этом. И даже, по большей части, не в стиле, о чем я говорил ранее. Главный момент это всё же - типобезопасность. Сишные *printf полагаются исключительно на строку формата, и не учитывают реального типа аргументов. Отсюда возможные всякие финты, которые до запуска выявить проблематично.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2013, 19:46     Преобразуем int в string
Еще ссылки по теме:

C++ String в Int
C++ Int to String
Int to string C++

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

Или воспользуйтесь поиском по форуму:
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
02.10.2013, 19:46     Преобразуем int в string #18
Цитата Сообщение от Croessmah Посмотреть сообщение
возможно тогда не возникнет таких ситуаций:
C++
1
2
3
4
5
    string Summ;
    
    for(int i=50; i>=0; i--){
        Summ[i] = '2';
    }
как одно с другим?
Yandex
Объявления
02.10.2013, 19:46     Преобразуем int в string
Ответ Создать тему
Опции темы

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