我正在使用以下代码。
#include <iostream>
using namespace std;
int main() {
char* str;
std::cin>>str;
return 0;
}
我显然明白str只指向一个指针,因此无法接受输入。但有没有办法将输入转换为字符指针??
答案 0 :(得分:1)
这将起作用:
#include <iostream>
using namespace std;
int main() {
char *str = new char[1];
cin >> str;
cout >> s
return 0;
}
答案 1 :(得分:0)
你可以这样做:
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