如何在C++中将输入输入到字符指针中

use*_*065 5 c++ input char

我正在使用以下代码。

#include <iostream>
using namespace std;

int main() {
  char* str;
  std::cin>>str;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我显然明白 str 只是一个指向任何内容的指针,因此无法接受输入。但是有没有办法将输入输入到字符指针中?

bam*_*s53 3

你可以这样做:

int buffer_size = 50
char *c = new char[buffer_size];
std::cin >> std::setw(buffer_size) >> c;
Run Code Online (Sandbox Code Playgroud)

然而这也存在一些问题;主要是因为它使用您必须管理的固定大小的原始数组。它还以非异常安全的方式手动管理数组的生命周期,尽管这可以通过智能指针修复。

std::unique_ptr<char[]> c(new char[buffer_size]);
std::cin >> std::setw(buffer_size) >> c.get();
Run Code Online (Sandbox Code Playgroud)

完全从原始数组转移到管理自己资源的对象会更好:

std::string s;
std::cin >> s;
Run Code Online (Sandbox Code Playgroud)

如果您需要char const *字符串中的 a ,则可以使用std::string::c_str().

void foo(char const *);

foo(s.c_str());
Run Code Online (Sandbox Code Playgroud)

或者,如果您确实需要,char*您可以执行以下操作:

void foo(char *c, size_t n);

foo(s.data(), s.size()); // C++11

// C++03
foo( (s.size() ? &s[0] : NULL), s.size()); // pass a pointer if the string is not empty, NULL otherwise
Run Code Online (Sandbox Code Playgroud)