Dobry wieczór, mam za zadanie napisać funkcję liczącą bardzo duże liczby, do tej pory napotkałem na problem którego nie mogę rozwiązać - konwersja z int na string. Oto moja funkcja, przy kompilacji wychodzi mi [Error] cannot convert 'std::basic_ostringstream<char>::__string_type {aka std::basic_string<char>}' to 'char' in assignment. Wiem, że istnieją łatwiejsze algorytmy, ale chciałem napisać swój. Pomoże ktoś, czego nie rozumiem tutaj?
#include <iostream>
#include <cstdarg>
#include <string>
#include <sstream>
#include <cstdlib>
using namespace std;
string sum( int iloscLiczb, string *tablica)
{
int przeniesienie = 0; //bedzie zapisywac przeniesione cyfry
int dlugoscSumy;
int dlugoscCyfry;
int k; // ilosc cyfr mniejszej liczby
int p; // ilosc cyfr wiekszej liczby
int pomocnicza; // zapisuje wynik dodawania aktualnych dwoch liczb
string suma = "0"; // zapisuje aktualny wynik dodawania
int k1; // pomocnicze
int p1;
int a;
ostringstream convert;
for ( int i = 0; i < iloscLiczb; i++ )
{
dlugoscSumy = suma.length();
dlugoscCyfry = tablica[i].length();
if ( dlugoscSumy <= dlugoscCyfry)
{
k = dlugoscSumy;
p = dlugoscCyfry;
k1 = k - 1; //indeksy cyfr
p1 = p - 1; // indeksy cyfr
for ( int j = p - 1; j >= k - 1; j-- )
{
pomocnicza = ( int ) tablica[i].at(p1) - 48 + ( int ) suma.at(k1) - 48 + przeniesienie;
convert << pomocnicza;
if ( pomocnicza > 9 )
{
przeniesienie = 1;
suma.at(k1) = pomocnicza / 10;
}
else
{
suma.at(k1) = convert.str();
przeniesienie = 0;
}
k1--;
p1--;
}
}
else
{
k = dlugoscCyfry;
p = dlugoscSumy;
k1 = k - 1;
p1 = p - 1;
for ( int j = p - 1; j >= k - 1; j-- )
{
pomocnicza = ( int ) tablica[i].at(p1) - 48 + ( int ) suma.at(k1) - 48 + przeniesienie;
if ( pomocnicza > 9 )
{
przeniesienie = 1;
suma.at(k1) = pomocnicza / 10;
}
else
{
suma.at(k1) = pomocnicza;
przeniesienie = 0;
}
k1--;
p1--;
}
}
przeniesienie = 0;
}
return suma;
}