[英]C++ How do I delete a certan character in a string?
您好,所以我基本上是想做這樣的事情。
PrintOpt("Hello | I | Am | Awesome");
並在我的PrintOpt代碼中
void PrintOpt(char* Text){
if(!strcmp(Text, " | ")){
Text = "\n";
}
printf(Text);
}
我想這樣打印出來
Hello
I
Am
Awesome
(On a new line)
但是,當我這樣做時,它什么也不會打印出來。 有人知道為什么這行不通嗎? 謝謝
使用std::string
替換方法
首先,您不應該將字符串文字“”作為char *
傳遞,尤其是嘗試修改該數據。 使用std::string
代替:
void PrintOpt(std::string Text){
while( true ) {
size_t pos = Text.find( " | " );
if( pos == std::string::npos ) break;
Text = Text.replace( pos, 3, "\n" );
}
std::cout << Text;
// or printf(Text.c_str()); if you insist on printf()
}
在語句“ if(!strcmp(Text,“ |”))中,您得到一個假。然后使變量Text取值為“ \\ n”並進行打印(\\ n相當於新行)。我想這就是為什么它不能按預期工作的原因。
要替換字符,您可以使用函數std :: replace。
我認為您必須在字符串的每個字符上使用strcmp,而不是一次全部使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.