C ++如何删除char中的双引号

时间:2014-01-26 12:35:00

标签: c++ replace char

我想从字符串中删除双引号,例如13.3" Rentina变为13.3 Rentina

const char* s = sheet->readStr(row, col);
int ii = strlen(s);
char* b;
b=(char*)s;

char ch;
for (int i = 0; i < ii ;++i) {
  strncpy(&ch, b+ii, 1);
  if(ch == '\"'){
    ch = '\"';
    memcpy(b+i, &ch, 1);
  }
}

myfile << b;

2 个答案:

答案 0 :(得分:1)

如果你在C ++中处理字符串,你应该使用字符数组和strncpy之类的函数,只有当你有充分的理由使用它们时。默认情况下,您应该使用标准字符串,例如内存管理更容易。使用std :: string解决问题的方法是

std::string s = sheet->readStr(row, col);  
size_t pos = 0;
while ((pos = s.find('"', pos)) != std::string::npos)
    s = s.erase(pos, 1);
myfile << s;

答案 1 :(得分:0)

你无法做b=(char*)s !!!

编译器允许您使用此编译器,但只要您尝试写入b指向的内存地址空间,就会得到运行时异常。

变量s 可能指向代码段中的地址,该地址是程序中的只读内存地址空间(“可能”,因为可能是{ {1}} const的声明只是您自己主动添加的内容。

您应该分配一个新的s数组,并将输出字符串复制到该数组中。

首先,将上述语句更改为char

此外,请勿向b = (char*)malloc(strlen(s))(或任何其他strncpy函数)传递str变量的地址。这些函数在char数组上运行,并假设数组以0字符结尾,或者将数组末尾的字符设置为0。

您可以尝试以下代码(假设您的目的是删除char):

'"'