I have a long string that I need to print to an output file. The trick is that no lines are longer than some given length, inputted by the user. I must put as many words as possible on the same line. I can not break any words or put punctuation marks at the beginning of a new line.
Here is what I have been playing with to no avail:
allText is the long string that has other manipulations done already.
1 2 3 4 5 6 7 8
int c = allText.size();
for(int d = 0; d <= c; d++){
for(int f = 0; f<=len;f++){
outfile<<allText[f];
}
outfile<<endl;
}
The problem is in your second for-loop. Every time that ends, the first for loops starts a new iteration and f is set back to 0, meaning that it will again start at the beginning of the string.
One possible solution is to do the following:
1 2 3 4 5 6 7 8 9 10 11
int c = allText.size();
int f = 0;
for(int d = 0; d <= c; d++){
for(int i = 0; i<=len;i++){
outfile<<allText[f];
f++;
}
outfile<<endl;
}
Another possible solution is to use std::string::substr(): http://www.cplusplus.com/reference/string/string/substr/
1 2 3 4 5 6 7
int c = allText.size();
int f = 0;
for(int d = 0; d <= c; d++){
outfile<<allText.substr(f, len);
f += len;
outfile<<endl;
}
Note that in order to determine whether there is whitespace or punctuation, you may want to have a look at the find-family of member functions: http://www.cplusplus.com/reference/string/string/substr/
Hope that gets you on your way, please do let us know if you have any further questions.