Konwersja z int do string okazuje się trudniejsza niż być powinna.

0

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;
	}
1

suma.at(k1) = convert.str();
zamień na:

  1. suma+=convert.str();
  2. suma[k1]=convert.str()[0];
0

@up Działa, alleluja, dziękuje za pomoc.

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