Konwersja z INT na STRING

0

Mój problem jest prosty do bólu. Ale niestety sam nie umiem sobie z nim poradzić. Do rzeczy:
Z inta chcę zrobić konwersje na string. Dokładniej po co mi to. Chce wypisać tekst "Wynik: " i zmienną i w formacie int. Za pomocą procedury graficznej BGI= outtextxy() lub moveto(); i outtext().
Ale funkcje outtext wymaga ode mnie tylko stringów. Jakiś pomysł?
Swoje programy pisze w C++.

0

Umiem korzystać z Googli. I próbowałem zastosować tylko nastała bariera wiedzy. I przez barierę nie zrozumiałem.

Klasa string (C++)
int i = 42; // mam rozumieć, że to jest to co chce zamienić.
string tmp; * brzydkie rozwiązanie * a to co jest?
sprintf((char*)tmp.c_str(), "%d", i); // po co podajemy char jako wskaźnik? tmp.c_str(), << co to jest? albo %d typ całkowity zgodę się ale w C++ tego jeszcze nie widziałem.
string str = tmp.c_str(); // następne dziwne funkcje których nie rozumiem.

0

To zamiast płakać że "nie rozumiesz" to może łaskawie DOCZYTAJ w dokumentacji?
Ciąg znaków czyli C-string to jest char*. Samo char byłoby JEDNYM znakiem.
Metoda c_str() zamienia std::string na char* właśnie.
Funkcja sprintf() jest funkcją z C, ale jak wiadomo w C++ można korzystać ze wszystkiego z czego można korzystać w C.
C++ rozwiazanie twojego problemu to stringstream.
http://www.cplusplus.com/reference/iostream/ostringstream/ostringstream/

0

Sama dokumentacja mi nic nie da ponieważ aby coś zapamiętać to muszę przeważnie rozumieć, co pisze i jak działa. I po sto razy was nie pytać i męczyć.
Na podstawie FAQ i Dokumentacji napisałem:

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

void main()
{
 clrscr();
 int i=42;
 char *str[10];
 itoa(i,str[10],10);
 cout<<*str[10];
 getch();
}

Jeśli przy cout<<*str[10] wyświetla się 4, obcina mi jedną liczbę dlaczego? jeśli dam & to chyba dostaje adres do pamięci, a jeśli nic otrzymuję puste miejsce. Dlaczego tak się dzieje?

1

Problem w tym, że nie masz podstaw C++ dotyczących ciągów znaków i w ogóle tablic. Masz tablicę znaków 10 -cio elementową. Indeksy w takiej sytuacji to 0..9. Ty podajesz 10-ty element na argumencie itoa więc już wyjeżdżasz za zarezerwowany obszar. Nie mówiąc już o cout.
Hmm teraz jeszcze patrzę że zadeklarowałeś tablicę 10 wskaźników na char

Tak to powinno wyglądać:

 int i=42;
 char str[10];
 itoa(i,str,10);
 cout<<str;
0

Napisałeś, że chcesz int na string to najprościej tak:

#include <stringstream>
#include <string>
#include <iostream>
//ble ble ble
int i = 42;
std::ostringstream ss;
ss << i;
std::cout<< ss.str();
0

Dziękuje bardzo Sarrus. Takie potworki wychodziły ponieważ nie znam itoa'y, i jak ona działała. Teraz będę wiedział.

1 użytkowników online, w tym zalogowanych: 0, gości: 1