C++ 如何在给定文本中用字符数组替换符号

C++ 如何在给定文本中用字符数组替换符号,c++,char,C++,Char,我有短信。例如:“你好,你叫什么名字?”我需要这样做:“你好,逗号,你叫什么,问号” 我需要使用字符数组(不是字符串类)更改带有单词的符号,我应该怎么做,请给我建议。我将字符串复制到了一个新的缓冲区。我费了一点劲才让它工作起来。我不知道这是否是你想要的 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { int i, j, k; size_t

我有短信。例如:“你好,你叫什么名字?”我需要这样做:“你好,逗号,你叫什么,问号”


我需要使用字符数组(不是字符串类)更改带有单词的符号,我应该怎么做,请给我建议。

我将字符串复制到了一个新的缓冲区。我费了一点劲才让它工作起来。我不知道这是否是你想要的

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    int i, j, k;
    size_t count_comma = 0;
    size_t count_question_mark = 0;
    char question_mark[] = "question mark";
    char comma[] = "comma";
    char *str;
    size_t str_size;
    char msg[] = "Hello, whats your name?";
    size_t msg_size = strlen(msg) + 1;

    for (i = 0; i < msg_size; i++) 
        if (msg[i] == ',') 
            count_comma++;
        else if (msg[i] == '?')
            count_question_mark++;

    str_size = msg_size + 1 
        //- count_comma - count_question_mark 
        + count_comma * strlen(comma) 
        + count_question_mark * strlen(question_mark);

    str = malloc(str_size);

    for (j = 0, i = 0; i < msg_size; i++) {
        if (msg[i] == ',') {
            str[j++] = ' ';
            i++;
            for (k = 0;  k < strlen(comma); k++) {
                str[j++] = comma[k];
            }
        } 
        if (msg[i] == '?') {
            str[j++] = ' ';
            i++;
            for (k = 0; k < strlen(question_mark); k++) {
                str[j++] = question_mark[k];
            }
        }

        str[j++] = msg[i];
    }

    str[j] = '\0';

    printf("%s\n", msg);
    printf("%s\n", str);
    return 0;
}
#包括
#包括
#包括
内部主(空)
{
int i,j,k;
大小\u t计数\u逗号=0;
大小\u t计数\u问号\u=0;
字符问号[]=“问号”;
字符逗号[]=“逗号”;
char*str;
大小(str)大小;;
char msg[]=“你好,你叫什么名字?”;
大小=strlen(msg)+1;
对于(i=0;i
到目前为止,您遇到了什么问题?请阅读以下内容:。我需要使用字符数组(而不是字符串类)更改单词符号,--数组无法调整大小,那么如何使字符串“更大”?
std::string
是动态的,所以它可以调整大小。问题太广泛了。谷歌“C替换文本字符串”。展示我们已经尝试了什么,我们将乐于帮助。你的程序是有效的C,但不是有效的C++,这个问题是问。您需要将C++中的<代码> MALLC/<代码>的结果显式地转换为正确的指针类型,而不应使用<代码> Malc C < /C> >和<代码> Primtf< /C>。相反,它应该是
new
cout