Ниже моя программа на C++ для умножения двух строк (целые числа в строках) и получения целочисленного результата в строке. Я считаю, что это связано с проблемой cout flush. Может кто-нибудь объяснить, как печатать значение без endl или любой текстовой строки непосредственно перед печатью ответа.std :: cout не печатает значение без outl (спецификатор новой строки)
#include <iostream>
using namespace std;
string multiply (string s1, string s2)
{
char str[10];
string ans="";
int m=s1.length();
int n=s2.length();
if (!s1.compare("0") || !s2.compare("0"))
return "0";
int *res = new int[m + n];
for (int i = m - 1; i >= 0; i--)
{
for (int j = n - 1; j >= 0; j--)
{
res[m + n - i - j - 2] += (s1[i] - '0') * (s2[j] - '0');
res[m + n - i - j - 1] += res[m + n - i - j - 2]/10;
res[m + n - i - j - 2] %= 10;
}
}
for (int i = m + n - 1; i >= 0; i--)
{
if (res[i] != 0)
{
for (int j = i; j >= 0; j--)
{
sprintf(str,"%d", res[j]);
ans+=str;
}
return ans;
}
}
}
int main() {
cout << multiply("0", "0"); // Doesn't work - prints nothing.
/**cout << multiply("0", "0") << endl; //works!! This prints "0" correctly **/
return 0;
}
Привет. Я попробовал ваше предложение сбросить cout после печати. Но все равно это не работает. cout << умножить («0», «0»); cout.flush(); – sureshrmdec
@sureshrmdec Извините, я обновил свой ответ на то, что точно указано в документации, и теперь это работает. –