gpt4 book ai didi

c++ - 我将如何在输入的任何文本的长度下加上下划线以及大写每个字母

转载 作者:行者123 更新时间:2023-12-05 09:30:07 28 4
gpt4 key购买 nike

抱歉,我是编程新手,需要一些帮助。我将如何做到这一点。这是我目前拥有的功能。

void DisplayTitle(string aTitle) {
cout << "\t" << aTitle << endl;
cout << "\t--------------\n\n";
}

我将如何确保无论输入哪个标题,每个字符都将大写并且下划线的字符数与上面显示的标题相同。

最佳答案

您可以使用 std::setfill结合 std::setw来自 <iomanip>如下:

std::cout << std::setfill('-') << std::setw(title.size()) << "";

在这里,您告诉流使用 '-' 的填充字符,然后是标题长度的填充输出大小,然后输出一个空字符串。因为字符串是空的,所以它将填充整个区域。

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

void DisplayTitle(const std::string& title, const char* prefix = "\t")
{
std::cout << prefix << title << "\n";
std::cout << prefix << std::setfill('-') << std::setw(title.size()) << "" << "\n\n";
}

int main()
{
for (std::string title; std::getline(std::cin, title); )
{
DisplayTitle(title);
}
}

示例输入:

One flew over the cuckoo's nest
The birds and the bees

示例输出:

        One flew over the cuckoo's nest
-------------------------------

The birds and the bees
----------------------

这是一个live demo以上。


哦,看来我错过了你的问题是问两件事的事实。您还想将标题大写。你可以用 std::transform 做到这一点,事实上它甚至可以在不修改字符串的情况下完成:

void DisplayTitle(const std::string& title, const char* prefix = "\t")
{
// Write title in all-caps
std::cout << prefix;
std::transform(title.begin(), title.end(),
std::ostream_iterator<char>(std::cout),
[](char c) { return std::toupper(c); });
std::cout << "\n";

// Underline title
std::cout << prefix << std::setfill('-') << std::setw(title.size()) << "" << "\n\n";
}

这是更新的 live demo进行上述更改。

关于c++ - 我将如何在输入的任何文本的长度下加上下划线以及大写每个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69833084/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com