正如标题所说,我试图用下划线替换字符串中的每个字母,后跟空格。例如:"你好"将被取代 " _ _ _ _ _"。我可以用空格或仅仅用下划线替换字母,但是我在更换两者时遇到了麻烦。任何帮助表示赞赏!
答案 0 :(得分:1)
基于regex
的解决方案:
#include <iostream>
#include <iterator>
#include <string>
#include <regex>
int main() {
std::string s = "hello";
std::regex_replace(std::ostream_iterator<char>(std::cout), s.begin(), s.end(), std::regex("."), "_ ");
return 0;
}
答案 1 :(得分:0)
这不是最有效的解决方案,但应该很容易理解:
#include <string>
#include <iostream>
int main()
{
std::string theString = "hello";
std::string theResult = "";
for (int count = 0; count < theString.length(); count++)
{
theResult += "_ ";
}
std::cout << theResult;
return 0;
}
答案 2 :(得分:-1)
我认为这就是你要找的东西:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string input;
string output;
int size_input;
cin>> input;
size_input= input.size();
for(int i=0; i<size_input; i++)
{
output+= "_";
if(i!= size_input-1)
output+= " ";
}
cout<< output<<endl;
}
答案 3 :(得分:-6)
嘲笑你一点。你不能!
我的意思是,如果你有字符串&#34;你好&#34;,&#34;替换&#34;它由&#34; _ _ _ _ _&#34;不只是取代,而且还在扩展。
如果您正在做一些刽子手游戏,请不要替换它,保持源词不变,有5个字符。
同时保留一些vector<bool> visibility;
初始化为长度5x false
。
你想要的地方&#34; _&#34;是单词的显示方法,根据"_"
显示每个字母visibility[index]
或字符串中的字母,并将下一个字母的位置移动到足以模拟一些足够的空间。这将在以后的游戏过程中导致显示如&#34; h e _ _ o&#34; (注意字母之间也包括空格)。
如果你需要不同的东西,我的建议可能是错的......
但一般情况下,除非你真的想要破坏内存中的原始字符串,否则不要覆盖它,生成新的字符串。那么@NathanOliver的建议是有效的。如果你想在内存中销毁原始字符串,那么问题就在于它存储的位置(char *string = "hello";
被编译成只读const段,你不想写在那里)以及如何分配内存,决定你是否可以扩大它以包含2倍以上的字母(&#34; _&#34;对)。
编辑: 在查看OP个人资料后,我发现他很可能真的在做刽子手游戏,所以我的猜测是正确的,我相信我的答案会帮助他从长远来看更多。
关于那个&#34; mock&#34;。我不是那个贬低他的问题的人。但是他已经做出了很好的否定 - 这和我的讽刺性使我成为了这样的开场白。
无论如何,我很乐意听到OP自己的声音,如果他确实发现它具有攻击性,或者他感受到了奇怪的尴尬幽默感,并且从其他答案中得知,我试图关心和帮助。 / p>
所以我可以做一个正确的 facepalm ,如果他受伤的话。仅仅从过度敏感的评论者那里获得乐趣是不公平的:/,我不能满足于此。