Start learning free

LESSON 379 OF 409 · PROJECTS: COMMAND-LINE TOOLS

CLI Tool: wc v4 — Mode Flag in C++

Practice

Combine the previous three versions of wc. Given a list of lines and a mode flag, return the requested count(s) as a string. This is our own simplified interface, not the real wc flags: the real tool combines flags (such as -lw) and pads its columns with spaces.

Function signature:

string wc(vector<string> lines, string mode)

Mode values:

  • "l" → line count, as a string.
  • "w" → word count (whitespace-separated tokens), as a string.
  • "c" → character count (lines only, no separating newlines), as a string.
  • "all" → lines + "\t" + words + "\t" + chars.

The "c" count is the one from v3 (the sum of the line lengths, no newlines). Any other mode value, for example "x" or "L" (modes are case-sensitive), gives the same result as "all". For an empty list, "l", "w" and "c" give "0" and "all" gives "0<TAB>0<TAB>0". The input is plain ASCII text.

Example:

Input: lines = ["hello", "world"], mode = "all"

Output: "2\t2\t10"

2 lines, 2 words (one per line), 10 characters total.


Compute all three counts upfront. Use istringstream for the word count and .size() for the character count. Branch on the mode string at the end.

int numLines = lines.size();
int numWords = 0;
int numChars = 0;
for (int i = 0; i < lines.size(); i++) {
    istringstream ss(lines[i]);
    string word;
    while (ss >> word) numWords++;
    numChars += lines[i].size();
}
Use to_string(int) to convert numbers to strings.

The full solution:
class Solution {
public:
    string wc(vector<string> lines, string mode) {
        int numLines = lines.size();
        int numWords = 0;
        int numChars = 0;
        for (int i = 0; i < lines.size(); i++) {
            istringstream ss(lines[i]);
            string word;
            while (ss >> word) numWords++;
            numChars += lines[i].size();
        }
        if (mode == "l") return to_string(numLines);
        if (mode == "w") return to_string(numWords);
        if (mode == "c") return to_string(numChars);
        return to_string(numLines) + "\t" + to_string(numWords) + "\t" + to_string(numChars);
    }
};

STEP 1 OF 12
    Ctrl + Enter to check

    Wc V4 in C++

    Keep going with C++About 340 step-by-step lessons, from your first line of code to coding interviews. Free to start.
    Start learning free