#include <iostream>
#include <vector>
#include <string>
std::vector<std::string> formatLines(const std::vector<std::string>& words, int maxWidth) {
std::vector<std::string> result;
std::string currentLine;
int currentLength = 0;
for (const std::string& word : words) {
// If adding this word exceeds maxWidth, push current line
if (currentLength + (currentLine.empty() ? 0 : 1) + word.size() > maxWidth) {
result.push_back(currentLine);
currentLine = word;
currentLength = word.size();
} else {
if (!currentLine.empty()) {
currentLine += " ";
currentLength++;
}
currentLine += word;
currentLength += word.size();
}
}
// Push the last line if not empty
if (!currentLine.empty()) {
result.push_back(currentLine);
}
return result;
}
int main() {
std::vector<std::string> words = {"This", "is", "a", "programming", "example", "of", "text", "wrapping"};
int maxWidth = 12;
std::vector<std::string> lines = formatLines(words, maxWidth);
for (const std::string& line : lines) {
std::cout << "\"" << line << "\"" << std::endl;
}
}
/*
run:
"This is a"
"programming"
"example of"
"text"
"wrapping"
*/