为什么我不能以字符的形式读取“”

时间:2018-12-04 10:11:56

标签: c++ string insert

我正在尝试将string插入另一个string中。当我找到用户定义字符的第一个字符,并在字符的第一个位置之后插入字符串时,我无法使程序将' '(space)用作字符而不是分隔符。

#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 :(得分:0)

首先,必须包含库"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的长度即可。否则会增加时间复杂度。

答案 1 :(得分:0)

通常我们以空格作为分隔符,我认为它也将具有ASCII值。 请检查示例代码,就像其他任何字符一样,我正在插入空格。如果我发现字符“ e”,则表示正在插入空格。我们还有isspace函数来检查C ++中的空间。

char str[]="Examplesentence to test isspace\n";
while (str[i])
{
c=str[i];
if (c =='e' )  c=' ';
putchar (c);
}