문자열의 구문 분석 문제를 해결하기 위해 노력하고 있습니다 ** 어떤 이유로 아래 코드는 휴지통, 누구든지 제발 좀 봐 주실 래요? C++ char ** -> vector <string> -> string -> char ** 구문 분석 문제
- 어떻게 해야하는거야 문자열을 문자열로 바꿈 부스트/알고리즘/문자열을 사용하는 토큰
- 새 문자 **를 생성하고 토큰을 모두 덤프하고 새 문자 **, clea n 위로
내가 잘못 했나요?
#include <string>
#include <vector>
#include <iostream>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost;
typedef vector<string> string_array;
int main(int argc, char ** argv)
{
string_array args;
string_array tokens;
cout << "Real arguments :" << endl;
for(int i = 0; i < argc; i++)
{ cout << argv[i] << endl;}
string arg = "";
for(int i = 1; i < argc; i++)
{
args.push_back(argv[i]);
}
for(int i = 0; i < (int)args.size(); i++)
{
arg += args[i];
if(i != (int)args.size() - 1)
arg += " ";
}
split(tokens, arg, is_any_of(" "));
char ** new_args = NULL;
new_args = new char*[(int)tokens.size()];
for(int i = 0; i < (int)tokens.size(); i++)
{
new_args[i] = new char[(int)tokens[i].size()];
for(int j = 0; j < (int)tokens[i].size(); j++)
{
new_args[i][j] = tokens[i][j];
}
}
for(int i = 0; i < (int)tokens.size(); i++)
{ std::cout << new_args[i] << std::endl; }
delete [] new_args;
}
어디에서 어떻게 잘못됩니까? – Mark
또한 new_args의 메모리 릴리스가 올바르지 않습니다. 루프에서 new_args [i]도 삭제해야합니다. –
@aJ : 대체로 올바르지 만 new_args [i]를 삭제하기 위해 배열 형태의 삭제를 사용해야합니다. :-) –