C++動態分配我在下面的一段代碼中遇到了一個問題,問題就是動態分配的char *數組的值從第24行變爲第28行,而我無法確定爲什麼char *
代碼:
#include <iostream>
#include <string>
#include <stdlib.h>
#include <ctype.h>
#include <cstring>
using namespace std;
int main() {
string x = "5+90-88n";
unsigned int i =0, k=0, argc=0;
char** argv = new char*[x.length()];
while (i < x.length()) {
if (isdigit(x[i])) {
k=0;
while (isdigit(x[i+k])) {k++;}
argv[argc] = (char*)x.substr(i,k).c_str();
i+=k;
} else {
argv[argc] = (char*)x.substr(i,1).c_str();
i++;
}
cout << argc <<" "<< argv[argc] <<endl;
argc++;
}
cout << " ------ \n";
for (unsigned int kk =0; kk<argc; kk++) {
cout << kk << " " << argv[kk] << endl;
}
return 0;
}
輸出:
0 5
1 +
2 90
3 -
4 88
5 n
------
0 n
1 n
2 n
3 n
4 n
5 n
我期待的上部和下部是一樣的,是不是,即使有一些失誤同樣的手段我做了,沒有注意到,或者有些我不知道使用動態分配的東西。
你爲什麼亂搞char *數組?使用字符串的向量。 –
我知道向量更好,但我不確定在我的任務中使用它們,因爲這是賦值的一部分,但上述部分會導致主要問題 –
您爲*指針*分配內存,但不爲字符串分配內存。 –