-1
int main()
{ 
char* NamePointer = new char;


std::cout << "Enter the file you want to edit (MUST BE IN THE PROJECT'S DIRECTORY): ";
std::cin >> &NamePointer;

const char* FileName = NamePointer;
delete &NamePointer;


return 0;
}

これにより、タイトルにエラーが返されます。

std::cin >> &NamePointer;

何か案は?これはおそらく私が見逃している単純なものですが、それを調べたとき、私は答えを得ることができませんでした。

修正しました。ごめんなさい。「&NamePointer」の「&」を取り出しました。

ええ、c_str()を使用してこれを行う別の方法を見つけました。ごめん!

4

2 に答える 2

3

あなたが持っている必要があります:

std::cin >> NamePointer;

また、1文字のメモリを割り当てているだけです。おそらく、次のことを意味します。

char* NamePointer = new char[MAX_SIZE];

次のように割り当てを解除します。

delete []NamePointer;

これを行うC++の方法は、単純にを使用することであることに注意してください。これは、次を使用std::stringして発生するバッファオーバーフローの問題を処理しますchar*

std::string Name;
std::cin >> Name;
于 2012-04-04T03:25:24.503 に答える
0

ここでは、オペレーターのアドレスは必要ありません。単に:

std::cin >> NamePointer;

私が気づいた他のいくつかのこと:

char* NamePointer = new char;

おそらく、1文字だけではなくより多くのスペースが必要です。単純な開始は、大きな静的割り当てである可能性があります。

char NamePointer[1024];

この場合、最後のステートメントを省略します(ちなみに、これも演算子のアドレスをdelete使用しません)。

于 2012-04-04T03:26:42.397 に答える