自制删除如果是 space
Self made remove if is space
我正在学习 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
}
}
这个 while 循环:
while(inSub != " ") {
永远不会完成,因为您永远不会在循环内更改 insub
的值。
仅供参考,没有调用任何预定义字符串的函数
functions/methods 除了大小,并且只有一个数组:
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] = '[=10=]';
cout << data << endl;
delete[] data;
}
但无论如何,像 KerrekSB 示例中的解决方案更可取。
我正在学习 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
}
}
这个 while 循环:
while(inSub != " ") {
永远不会完成,因为您永远不会在循环内更改 insub
的值。
仅供参考,没有调用任何预定义字符串的函数
functions/methods 除了大小,并且只有一个数组:
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] = '[=10=]';
cout << data << endl;
delete[] data;
}
但无论如何,像 KerrekSB 示例中的解决方案更可取。