如何使用cin指定char指针?

Ell*_*678 3 c++

所以基本上当我尝试这样做时

char* inputFileName;
cout<<  "Filename: "; cin>>*inputFileName;
Run Code Online (Sandbox Code Playgroud)

它让我输入文件名但是当我按下回车时我得到一个未处理的异常错误.有任何想法吗?

如果我尝试也编辑

char* inputFileName;
cout<<  "Filename: "; cin>>inputFileName;
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,我得到一个调试断言失败.

Dr.*_*wer 9

您需要传入指针,而不是解除引用的指针,并为char*分配内存

#include <iomanip>
#include <iostream>
using namespace std;

int main(){
    const size_t BUFFER_SIZE = 1024;
    char inputFileName[BUFFER_SIZE];
    cout << "Filename: ";
    cin >> setw(BUFFER_SIZE) >> inputFileName;
    cout << inputFileName << endl;
}
Run Code Online (Sandbox Code Playgroud)

另外一个选择char inputFileName[BUFFER_SIZE];

char *inputFileName = new char[BUFFER_SIZE];
Run Code Online (Sandbox Code Playgroud)

然后

delete [] inputFileName;
Run Code Online (Sandbox Code Playgroud)

  • 删除[](尽管std :: string确实是正确的答案,imo) (3认同)
  • 同意,我会使用std :: string,但我试图按照要求回答问题. (3认同)
  • 它正在回答它imo.OP需要读取一系列字符,这就是`cin >> someString;`的确如此(虽然对于文件名,`getline`可能会更好).`cin >> someCharArray;`容易出现缓冲区溢出.如果我们专注于针对每个问题提出的最具体的问题,那么XY问题最终会变得非常糟糕,并且很多人会错过这样一个事实,即他们正在尝试做的事情更简单,更安全. (2认同)