我正在学习C ++并且正在练习,我正在制作一个四功能计算器。我正在尝试(出于实践原因)创建我自己的函数,从字符串中删除所有空格。函数编译但程序在执行函数时崩溃。有谁能告诉我出了什么问题?
功能:
int operate(std::string inRaw) {
// Parsing
int j = 0;
int inMinLen;
int inLen = inRaw.length();
std::string inSub, in[inLen];
for(int i = 0; i < inLen; i++) {
inSub = inRaw.substr(i, 1);
while(inSub != " ") {
in[j] = inSub;
j++;
}
inMinLen = j+1;
}
std::string inMin[inMinLen];
for(int k = 0; k < inMinLen; k++) {
inMin[k] = in[k];
std::cout << in[k]; // DEBUG
}
}
答案 0 :(得分:2)
这个while循环:
while(inSub != " ") {
永远不会完成,因为你永远不会在循环中更改insub
的值。
答案 1 :(得分:1)
仅供参考,不调用任何预定义字符串的函数
函数/方法除了大小,只有一个数组:
void operate(std::string inRaw) {
size_t len = inRaw.length();
size_t current = 0;
char *data = new char[len + 1];
for(size_t i = 0; i < len; i++)
{
data[current] = inRaw[i];
if(data[current] != ' ')
current++;
}
data[current] = '\0';
cout << data << endl;
delete[] data;
}
但是KerrekSB示例中的解决方案仍然是可取的。