Сравните две строки add (пустое место, запятые, точки и т. Д.) Переполнение стека

Привет всем, я надеюсь, что кто-то может мне помочь, я пытаюсь исправить вывод моей строки, я получаю вывод, но все это объединено в одну длинную строку без пробелов и т. Д., Поэтому я пытаюсь использовать старую строку, которая была там раньше с запятыми и т. д. и замените их в новом. Я действительно не знаю, как это сделать, я попробовал это на c ++, если я запустил приведенный ниже код в моей программе, он зависнет, я понятия не имею, как это исправить.

string input2 = "chq pste uwdn or mfwiejjne
u aaul mvabe mrv po zso, jnp kg co urfrsrvwn,
azh s bmmpd lanmf kuupv chqvw, xf opsh azh ojtfpwb mmhw;
wizi tnaz vgfs imdu i tenn ttijn, a tmnn fav lqe tsfny niw,
jnp paee mpgwe ur lqe niw uogh yuapi.
swd u wzjlx lsee esen pqeun ttijn, fav hnaoi uxmqw vaobtawg epgf,
ddshyizk xaoy xzn vqmdb or xzn mavfrns xg fhqvw chq gjrcwil bizkk;
chqvw vipraphf’w sul m kdrmyij, jnp rgxn m tmapxi yuoi,
efm ehifrns jmul aj lqe xmfwef’w ornsw.
a fixp saiei swd ss fxw, rsj jlieqb nukzc azh vjy
u lwjr xecn wmxwa lmthrns aach xso bogrvb bk xzn stsjn;
wtmdn i exswd ar lqe dssmwmc, ga oz xzn pmzwvezxk prqc,
a qemv ac iz xzn dqih qemvl’b cavw.";string result = "THELAKEISLEOFINNISFREEIWILLARISEANDGONOWANDGOTOINNISFREEANDASMALLCAB
INBUILDTHEREOFCLAYANDWATTLESMADENINEBEANROWSWILLIHAVETHEREAHIVEFORTH
EHONEYBEEANDLIVEALONEINTHEBEELOUDGLADEANDISHALLHAVESOME
PEACETHEREFORPEACECOMESDROPPINGSLOWDROPPINGFROMTHEVEILSOFTHEMORNINGTOWHERETHE
CRICKETSINGSTHEREMIDNIGHTSALLAGLIMMERANDNOONAPURPLEGLOWANDEVENINGFULLOFTHELINNET
SWINGSIWILLARISEANDGONOWFORALWAYSNIGHTANDDAYIHEARLAKEWATERLAPPINGWITHLOWSOUNDSB
YTHESHOREWHILEISTANDONTHEROADWAYORONTHEPAVEMENTSGREYIHEARITINTHEDEEPHEARTSCORE";

string original = input2; //original unchanged text with spaces, commas etc
string tempResult = result; //the new output without spaces, commas, dots etc
string fixed = ""; //string to be altered with spaces, commas etc
int originalSize = input2.size();
int i = 0, j = 0;

for(i, j; i < originalSize ;i++)
{
if(isalnum(original[i]) || !original[i] == ' ')
{
fixed += tempResult[j];
j++;
}
else
{
fixed += tempResult[j];
}
}

0

Решение

Как отмечено в комментариях, предоставляя Минимальный, полный и проверяемый пример было бы легче понять ваш вопрос, но я думаю, что понимаю, что вы пытаетесь сделать. Внося минимальные изменения в ваш код, одним из решений может быть следующее:

#include <iostream>
#include <string>

using namespace std;

string original = "xxxx, x xxxxx, xx x xxxxxx xxxxxxxx.";
string letters = "ThisIthinkisabetterquestion";
string desired = "This, I think, is a better question.";

int main()
{
string fixed;
int i, j;
int originalSize = original.size();

for(i=j=0; i < originalSize ;i++)
{
if(!isalnum(original[i]))
{
fixed += original[i];
}
else
{
fixed += letters[j++];
}
}
cout << fixed << endl;
cout << desired << endl;
return 0;
}
0

Другие решения

Других решений пока нет …