2015-02-05 2 views
0

Привет, поэтому я в основном пытаюсь сделать что-то подобное.C++ Как удалить символ certan в строке?

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) 

Но когда я делаю это не печатать ничего. Кто-нибудь знает, почему это не работает? Спасибо

+0

Вы хотите, чтобы каждое слово было по-своему? То есть каждый экземпляр '|' заменяется на '\ n'? – BoBTFish

+0

Да точно. Я пробовал все, что чувак:/ – Ambition

+1

Это похоже на * замену * на * удаление *. –

ответ

0

В заявлении "if (! Strcmp (Text," | ")) вы получаете false. Затем вы делаете переменную Text значением" \ n "и вы ее печатаете (\ n является эквивалентом новой линии). Я думаю, именно поэтому он не работает, как ожидалось.

Чтобы заменить символы, которые вы могли бы использовать функцию зЬй :: заменить.

5

используйте std::string заменить метод

0

Я думаю, вы должны использовать strcmp для каждого символа строки, а не для всех сразу.

2

Прежде всего, вы не должны передавать строковый литерал «» как 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() 
} 
+0

Почти точно, что я собирался опубликовать. Хотя я «нашел» и проверил против «npos» в состоянии «while». – BoBTFish

0

Похоже, что вы делаете это в с не C++, и я предположил бы, что ты в курсе, или что-то, что требует от вас, чтобы сделать так, как это, как мои курсы. Любой, кто уверен, что есть намного лучшие способы выполнить это, используя класс string, но так я сделал бы это для курсов, которые я принимаю, в которых мне не разрешено использовать std :: string.

#include<iostream>                        
#include<string.h> 
using namespace std;               

void printOpt(char* text){                      
    int n = strlen(text);                      
    for (int i = 0; i < n; i++){                    
     if (text[i] == '|'){                     
      text[i]= ' ';                      
      text[i+1] = '\n';                     
     }                          
    }                           
    cout << text<<endl;                      
}  
Смежные вопросы