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

Posted

技术标签:

【中文标题】如何在c ++中将输入输入字符指针【英文标题】:how to take input into a character pointer in c++ 【发布时间】:2012-12-10 10:25:14 【问题描述】:

我正在使用以下代码。

#include <iostream>
using namespace std;

int main() 
  char* str;
  std::cin>>str;
  return 0;

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

【问题讨论】:

不,指针存储的是内存地址,而不是字符。 你为什么要这样做?使用std::string @LightnessRacesinOrbit 我想使用字符指针解析字符串。 【参考方案1】:

你可以这样做:

int buffer_size = 50
char *c = new char[buffer_size];
std::cin >> std::setw(buffer_size) >> c;

但是这样做有问题;主要是因为它使用了您必须管理的具有固定大小的原始数组。它还以非异常安全的方式手动管理数组的生命周期,尽管可以使用智能指针来修复。

std::unique_ptr<char[]> c(new char[buffer_size]);
std::cin >> std::setw(buffer_size) >> c.get();

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

std::string s;
std::cin >> s;

如果您需要来自字符串的char const *,您可以使用std::string::c_str()

void foo(char const *);

foo(s.c_str());

或者,如果您真的需要 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

【讨论】:

【参考方案2】:

这将起作用:

#include <iostream>
using namespace std;

int main() 
  char *str = new char[1];
  cin >> str;
  cout >> s
  return 0;

【讨论】:

以上是关于如何在c ++中将输入输入字符指针的主要内容,如果未能解决你的问题,请参考以下文章

如何用C语言统计一个数据文件中的数据个数

如何在 Vim 中将表情符号输入到字符串中?

如何在 Spring Boot 中将输入字符串转换为 json 字符串或 json 对象

如何使用扫描仪在java中将输入作为带有空格的字符串

如何在 FreeMarker 中将字符串作为输入传递? [复制]

如何在不使用 getline 的情况下在 C++ 中将输入字符串直到行尾