포인터를 사용하는 C++의 숙제를위한 문자열 토큰 화 프로그램을 작성하고 있습니다. 그러나 & 디버그를 실행하면 포인터 pStart가 유효하지 않다고 표시됩니다. 내 문제가 내 param'ed 생성자에 있다는 느낌이 들었습니다. 아래에서 생성자와 객체 생성을 모두 포함했습니다.불량 포인터? - C++
디버깅 할 때 pStart가 나쁜 포인터라는 이유를 설명해 주시면 감사하겠습니다.
감사합니다.
StringTokenizer::StringTokenizer(char* pArray, char d)
{
pStart = pArray;
delim = d;
}
// create a tokenizer object, pass in the char array
// and a space character for the delimiter
StringTokenizer tk("A test char array", ' ');
전체 stringtokenizer.cpp :
#include "stringtokenizer.h"
#include <iostream>
using namespace std;
StringTokenizer::StringTokenizer(void)
{
pStart = NULL;
delim = 'n';
}
StringTokenizer::StringTokenizer(const char* pArray, char d)
{
pStart = pArray;
delim = d;
}
char* StringTokenizer::Next(void)
{
char* pNextWord = NULL;
while (pStart != NULL)
{
if (*pStart == delim)
{
*pStart = '\0';
pStart++;
pNextWord = pStart;
return pNextWord;
}
else
{
pStart++;
}
}
return pNextWord;
}
다음 문자 배열은 다음 단어에 대한 포인터를 리턴하는 함수 supossed된다. 현재 완료되지 않았습니다. :)
전체 stringtokenizer.h :
#pragma once
class StringTokenizer
{
public:
StringTokenizer(void);
StringTokenizer(const char*, char);
char* Next(void);
~StringTokenizer(void);
private:
char* pStart;
char delim;
};
전체 MAIN.CPP :
const int CHAR_ARRAY_CAPACITY = 128;
const int CHAR_ARRAY_CAPCITY_MINUS_ONE = 127;
// create a place to hold the user's input
// and a char pointer to use with the next() function
char words[CHAR_ARRAY_CAPACITY];
char* nextWord;
cout << "\nString Tokenizer Project";
cout << "\nyour name\n\n";
cout << "Enter in a short string of words:";
cin.getline (words, CHAR_ARRAY_CAPCITY_MINUS_ONE);
// create a tokenizer object, pass in the char array
// and a space character for the delimiter
StringTokenizer tk(words, ' ');
// this loop will display the tokens
while ((nextWord = tk.Next ()) != NULL)
{
cout << nextWord << endl;
}
system("PAUSE");
return 0;
받고있는 오류 메시지는 무엇입니까? – ihtkwot
'CXX0030 : 오류 : 표현식을 평가할 수 없습니다. '감사! – Alex
CXX003은 C/C++ 런타임/컴파일 타임 오류가 아니라 디버거에서 오류가 발생하여 값 평가자를 잘못 사용한다고 오류가 발생했습니다 - http://msdn.microsoft.com/en-us/library/ 360csw6a (VS.71) .aspx 더 완벽한 코드를 보낼 수 있다면 더 좋을 것입니다. 붙여 넣은 비트가이 형식에서 불완전하고 잘못되었습니다. 즉, pStart는 무엇입니까? – mloskot