我正在尝试将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;
}
答案 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);
}