char* and cin in C++

char* and cin in C++

本文关键字:in C++ cin and char      更新时间:2023-10-16

我想使用cin向char *变量输入一个不确定长度的字符串;

我可以这样做:

char * tmp = "My string";
cout << tmp << endl;
system("pause");

效果很好。

但是我没有做到:

 char * tmp
 cin >> tmp;

你能告诉我怎么回事吗"

好吧,您还没有为char*创建一个指向的对象。

char* tmp = new char[MAX_LENGTH];

应该使它更好地工作(您必须定义MAX_LENGTH)。另一种方法是:

std::string strtmp;
cin >> strtmp;
const char* tmp = strtmp.c_str();

这个方法意味着你不需要使用new

几个问题:

char * tmp
cin >> tmp;

tmp没有被分配(它目前是随机的)。

operator>>(当与char*或string一起使用时)读取单个(空格分隔)单词。

问题1:

如果您使用char*并分配缓冲区,那么您可能没有分配足够的空间。读取操作可能读取的字符多于缓冲区中可用的字符。一个更好的主意是使用std::string(从中你可以得到一个C-String)。

问题2:

无法读取不确定的字符串。但是您可以使用std::getline一次读取一行。

std::string line;
std::getline(std::cin, line);
char* str = line.data();