Почему я не могу прочитать "", пробел, как символ - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь вставить string в другой string.когда я нахожу первое появление пользовательского символа и вставляю строку после первой позиции символа, я не могу заставить программу принять ' ' (пробел) как символ, а не как разделитель.

#include <iostream>
#include <math.h>
#include <fstream>
#include <strings.h>

using namespace std;

int main()
{
    int i=0,j=0,ok=0,k=0,p=0;
    char s[256],aux[256],a[256];
    char c;
    cin.get(s,256);//reading the string
    cin.get();
    cin.getline(a,256);//reading the string that I want to insert
    cin.getline();
    cin>>c;//reading the separator
    strcpy(aux,s);
    while(j<=strlen(s) && s[j]!=c)//searching for the first apparition of the separator
    {
        j++;
    }
    ok=strlen(a);
    strcpy(s+j+1,a);//making room for the string that insert and inserting the string
    strcpy(s+j+ok,aux+j);
    cout<<s;
}

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Вообще пространство мы берем в качестве разделителя, я думаю, что оно также будет иметь значение ASCII.пожалуйста, проверьте пример кода, я вставляю пробел, как и любой другой символ.если я нахожу символ «е», я вставляю пробел.у нас также есть функция isspace для проверки пространства в C ++.

char str[]="Examplesentence to test isspace\n";
while (str[i])
{
c=str[i];
if (c =='e' )  c=' ';
putchar (c);
}
0 голосов
/ 04 декабря 2018

Прежде всего вы должны включить библиотеку "string.h" для компиляции вашей программы.Затем вы можете сделать следующее:

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

int main()
{
    int i=0,j=0,ok=0,k=0,p=0;
    char s[256],aux[256],a[256];
    char c;
    cin.get(s,256);//reading the string
    cin.get();
    cin.getline(a,256);//reading the string that I want to insert
    c = getchar();//reading the separator
    getchar(); // for getting enter from keybord
    strcpy(aux,s);
    int len = strlen(s); // this function is of time complexity O(len)
    while ( j <= len && s[j]!=c)//searching for the first apparition of the separator
    {
        j++;
    }
    ok=strlen(a);
    strcpy(s+j+1,a);//making room for the string that insert and inserting the string
    strcpy(s+j+1+ok,aux+j);
    cout<<s;
}

Примечание: Вместо того, чтобы снова и снова вызывать метод strlen(s) внутри while loop, вы можете просто вычислить длину строки - s один раз.в противном случае это увеличит сложность времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...