我想从字符串中删除双引号,例如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;
答案 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
):
'"'