gpt4 book ai didi

c++ - 字幕字符串(向左滚动文本)

转载 作者:行者123 更新时间:2023-11-30 05:27:52 26 4
gpt4 key购买 nike

我想要一个向左滚动文本的通用函数。鉴于此,我做了这个:

void marquee2(std::string& text) {
std::string temp = text;
text.erase(0, 1);
text += temp[0];
}

它就像一个魅力。

如果你这样调用它:

int main()
{
std::string test = "Now playing - TEST.MP3 - ";
while (true)
{
marquee2(test);
SetConsoleTitleA(test.c_str());
}
return 0;
}

它给了我想要的结果:

Now playing - TEST.MP3 - 
ow playing - TEST.MP3 - N
w playing - TEST.MP3 - No
playing - TEST.MP3 - Now
playing - TEST.MP3 - Now
laying - TEST.MP3 - Now p
aying - TEST.MP3 - Now pl
ying - TEST.MP3 - Now pla
ing - TEST.MP3 - Now play
ng - TEST.MP3 - Now playi
g - TEST.MP3 - Now playin
- TEST.MP3 - Now playing
- TEST.MP3 - Now playing
TEST.MP3 - Now playing -
TEST.MP3 - Now playing -

等等……

但主要问题是,当我想限制字符串时。因此,我希望以某种方式更改我的函数,以便它应该限制结果字符串。

void marquee_limit(std::string& msg, size_t limit)

给定“TEST”和 2,期望的结果:

TE
ES
ST
TT
TE
ES
ST
TT

等等...给定 TEST 和 3:

TES
EST
STT
TTE
TES
EST
STT
TTE

等等...给定“正在播放 - ”和 3:

NOW
OW
W P
PL
PLA
LAY
AYI
YIN
ING
NG
G -
-
- N
NO
NOW

然后重复序列...

最佳答案

一种方法是像这样修改现有函数:

std::string marquee_limit(std::string& text, size_t limit) {
std::string temp = text;
text.erase(0, 1);
text += temp[0];

return text.substr(0,limit);
}

然后在你的 while 循环中这样调用它:

while (true)
{
SetConsoleTitleA(marquee_limit(test,2).c_str());
}

关于c++ - 字幕字符串(向左滚动文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37078561/

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