#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string>
using namespace std;
string compress_string(string input_string)
{
string output_string;
int j=0;
for (int i=0; i < input_string.length();i++,j++)
{
output_string[j] = input_string[i];
cout<<"output string at "<<j<<"is"<<output_string[j];
int count =1;
for (int k = i; k < input_string.length();k++)
{
if (input_string[i+1] == input_string[i])
{
count++;
i++;
}
else
{
break;
}
}
j++;
cout<<"count is"<<count<<"\n";
output_string[j]=count+'0';
cout<<"String till now is "<<output_string<<"\n";
}
output_string[j]='\0';
cout<<"Output string:"<<output_string<<"\n";
printf("output string is %s\n",output_string.c_str());
return output_string;
}
int main() {
// your code goes here
string input_string;
cout << "Enter the string";
cin >> input_string;
cout<<"Compressed output is"<<compress_string(input_string);
return 0;
}
上記のプログラムを試しましたが、プログラムの最後の圧縮出力が印刷されないことがわかりました。
私はc_str()を使用するかどうかはprintfで表示されますが、何とかmain関数とcompress_string関数で圧縮出力を表示していないことがわかります。C++で文字列を印刷することができません
「動作していません」より具体的にしてください。 – GhostCat
実際のエラーは何ですか? – Shravan40
'output_string'は空です。 'output_string [j]'はすべての 'j> 0'に対して、バッファオーバーランを介して未定義の動作を示します。 –