python - 字符串操作 像在 python 中一样重复字母
问题描述
在 pyhton 中,您可以执行以下操作
word = "e" * 5
print(word)
得到“eeeee”
但是当我在 C++ 中尝试同样的事情时,我遇到了输出不包含任何文本的问题,这是我正在尝试的代码
playerInfo.name + ('_' * (20 - sizeof(playerInfo.name)))
我很想平衡字符串的长度,所以播放器列表中的所有内容都彼此内联
提前感谢您的帮助
解决方案
如果您的实际问题是您希望将名称显示为特定宽度,则不要修改基础数据。相反,利用ostream
的格式化功能来设置对齐和填充宽度。不应修改基础数据以迎合显示。显示功能应该能够获取基础数据并根据需要对其进行格式化。
这取自https://en.cppreference.com/w/cpp/io/manip/left,它专门描述了该功能,但显示了andstd::left
的示例,它应该可以满足您的需求。您将需要使用这些功能。std::setw
std::fill
#include <iomanip>
#include <iostream>
#include <iomanip>
int main(int argc, char** argv)
{
const char name1[] = "Yogesh";
const char name2[] = "John";
std::cout << "|" << std::setfill(' ') << std::setw(10) << std::left << name1 << "|\n";
std::cout << "|" << std::setfill('*') << std::setw(10) << std::right << name2 << "|\n";
}
输出
|Yogesh |
|******John|
关于 std::cout 和 ostreams 持久性的说明
请注意,它std::cout
是一个std::ostream
对象,默认情况下会在程序的生命周期内存在(或者对于足够接近生命周期的程序而言)。作为一个对象,它有成员变量。当我们调用时,std::setfill('*')
我们正在设置其中一个成员变量(填充字符)并覆盖默认填充字符。当我们调用时,std::setw(10)
我们正在设置流的底层宽度,直到另一个函数清除它。
std::setfill
, std::left
,std::right
将一直存在,直到您将它们明确设置为其他值(它们不会自动返回默认值)。std::setw
将持续到(来自https://en.cppreference.com/w/cpp/io/manip/setw)之一
operator<<(basic_ostream&, char) and operator<<(basic_ostream&, char*)
operator<<(basic_ostream&, basic_string&)
std::put_money (inside money_put::put())
std::quoted (when used with an output stream)
所以std::setw
会一直持续到基本上下一个std::string
或const char *
输出。
推荐阅读
- python - 通过均值和标准差对 scipy 中的负二项式进行参数化
- colors - 使用Meshlab分析颜色到顶点颜色的偏差
- angular - Angular 6 ui-router 抛出“转换错误”
- node.js - 单击元素时从 mongodb 中删除特定的数组元素
- python - 导入 pandas python 时出错 - 找不到 DLL
- android - Retrofit2 不可接受的响应
- asp.net-core-webapi - 带有 ef 核心的 web api 核心中出现 404 错误
- reactjs - react native:状态更新对变换没有影响
- ios - 如何将 Json 数据从一个班级传递到另一个班级?
- javascript - Twilio - 根据时间戳过滤通话记录