如何在C++中使用字符指针

krcsximq  于 2023-08-09  发布在  其他
关注(0)|答案(2)|浏览(191)

我使用以下代码。

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4. char* str;
  5. std::cin>>str;
  6. return 0;
  7. }

字符串
我显然明白,字符串只是一个指针,没有指向任何东西,因此不能接受输入。但是有没有一种方法可以将输入到字符指针中呢??

2g32fytz

2g32fytz1#

你可以这样做:

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

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

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


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

  1. std::string s;
  2. std::cin >> s;


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

  1. void foo(char const *);
  2. foo(s.c_str());


或者,如果你真的需要一个char*,你可以这样做:

  1. void foo(char *c, size_t n);
  2. foo(s.data(), s.size()); // C++11
  3. // C++03
  4. foo( (s.size() ? &s[0] : NULL), s.size()); // pass a pointer if the string is not empty, NULL otherwise

展开查看全部
mo49yndu

mo49yndu2#

这将工作:

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4. char *str = new char[some_max_size_value];
  5. cin >> str;
  6. cout << str;
  7. return 0;
  8. }

字符串

相关问题