好的,所以我正在尝试创建一个字符串,以便更新字符串。有点像你有一个字符串“你好”,我希望它更新自己有点像“h”“他”“hel”“地狱”“你好”
所以,我有:
#include <iostream>
#include <string>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
using namespace std;
int main()
{
system("title game");
system("color 0a");
string sentence = "super string ";
for(int i=1; i<sentence.size(); i++){
cout << sentence.substr(0, i) <<endl;
}
return 0;
}
代码返回如下:
“S “苏” “SUP” “苏佩” “超级”
显然在不同的行上,但是当我删除结束行时,句子构建器就变得狂暴了。它显示类似“spupsppuepr sttrrtrsubstringsubstring”
的内容无论如何我可以在同一行更新字符串吗? (并没有完全销毁)
答案 0 :(得分:3)
您可以在每次迭代时打印回车符'\r'
,将光标返回到行的开头:
for(int i=1; i<sentence.size(); i++){
cout << '\r' << sentence.substr(0, i);
}
或者只按顺序输出每个字符:
for(int i=0; i<sentence.size(); i++){
cout << sentence[i];
}
您可能还希望为每个循环迭代插入一个短延迟以实现打字机效果。
答案 1 :(得分:0)
运行代码会产生以下结果:
./ a.out的
ssusupsupesupersuper super ssuper stsuper strsuper strisuper strinsuper string
这正是你告诉它要做的。它与endl相同但没有换行符。如果您不希望它重复所有字母,您需要遍历字符串本身,而不是通过子字符串。
using namespace std;
int main()
{
system("title game");
system("color 0a");
string sentence = "super string ";
for(int i=0; i<sentence.size(); i++){
cout << sentence[i];
}
return 0;
}
答案 2 :(得分:0)
我的建议:使用While loop
。
#include <stdio.h>
#include <iostream>
int main() {
system("title game");
system("color 0a");
char* sentence = "super string";
while( *sentence ) std::cout << *sentence++;
return 0;
}