c++ - 如何在 C++ 中将带有空格的单词分成两列

标签 c++ output-formatting

我有一个文件,其中包含以下形式的电话号码列表:

Arvind 72580931
Sachin 7252890

我的问题是我们如何才能在两列中显示内容?

最佳答案

首先,您需要解析电话号码列表中的每一行以获取姓名和电话号码。然后你需要格式化输出,你可以使用std::setw(int)来指定输出的宽度。例如:

#include <iostream>
#include <string>
#include <iomanip>
#include <vector>

std::vector<std::string> stringTokenizer(const std::string& str, const std::string& delimiter) {
    size_t prev = 0, next = 0, len;
    std::vector<std::string> tokens;

    while ((next = str.find(delimiter, prev)) != std::string::npos) {
        len = next - prev;
        if (len > 0) {
            tokens.push_back(str.substr(prev, len));
        }
        prev = next + delimiter.size();
    }

    if (prev < str.size()) {
        tokens.push_back(str.substr(prev));
    }

    return tokens;
}

int main() {
    const int size_name = 20, size_phone = 10;
    std::cout << std::setw(size_name) << "NAME" << std::setw(size_phone) << "PHONE" << std::endl;

    std::vector<std::string> directory = {
        "Arvind 72580931",
        "Sachin 7252890",
        "Josh_Mary_Valencia 7252890"
    };

    for (const std::string& contact : directory) {
        std::vector<std::string> data = stringTokenizer(contact, " ");
        std::cout << std::setw(size_name) << data.at(0) << std::setw(size_phone) << data.at(1) << std::endl;
    }
}

输出:

                NAME     PHONE
              Arvind  72580931
              Sachin   7252890
  Josh_Mary_Valencia   7252890

关于c++ - 如何在 C++ 中将带有空格的单词分成两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38090882/

相关文章:

prolog - 强制 prolog 在输出结果中进行替换

r - 可以打印超过 100 行的 data.table 吗?

php - 输出或输入过滤?

接受 array.begin() 和 array.end() 作为参数的 C++ 函数

c++ - C 程序执行

python - 如何在 Jupyter 笔记本的 LaTeX 中自定义 numpy 数组列括号的显示格式?

python - 如何将嵌套字典的内容写入特定格式的文件?

c++ - 将参数传递给常量函数是否会在内存中复制?

c++ - Visual Studio 找不到任何标准 C++ 库文件

g++ - wcout 函数不打印法语字符