我正在寫一個字符串標記化程序,用於在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的指針的char數組中返回到下一個字。目前尚未完成。 :)
完全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 2010-02-06 03:21:49
'CXX0030:錯誤:表達式無法評估'謝謝! – Alex 2010-02-06 03:23:23
CXX003是一個C/C++運行時/編譯時錯誤,但在調試器中出現錯誤,說錯誤地使用了值評估器 - http://msdn.microsoft.com/en-us/library/ 360csw6a(VS.71).aspx 如果你能發送更完整的代碼會更好。你粘貼的位在這種形式中是不完整和不正確的,即pStart是什麼? – mloskot 2010-02-06 03:26:48