簡體   English   中英

C ++如何刪除字符串中的certan字符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM