Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

40,003 questions

51,950 answers

573 users

How to format an array of strings in lines with maxWidth without breaking the words in C++

1 Answer

0 votes
#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"

*/

 



answered Dec 2, 2025 by avibootz

Related questions

...