我想使用cin向char *变量输入一个不确定长度的字符串;
我可以做这个:
char * tmp = "My string";
cout << tmp << endl;
system("pause");
它完美地运作。
但我没有做到这一点:
char * tmp
cin >> tmp;
你能告诉我一个什么是错的“
好吧,你还没有为qazxsw点指向创建一个对象。
char*
应该让它更好地工作(你必须定义MAX_LENGTH)。另一种方法是:
char* tmp = new char[MAX_LENGTH];
这种方法意味着你不需要使用std::string strtmp;
cin >> strtmp;
const char* tmp = strtmp.c_str();
。
几个问题:
new
tmp未分配(目前是随机的)。
char * tmp
cin >> tmp;
(与char *或string一起使用时)读取单个(空格分隔)单词。
问题1:
如果您使用operator>>
并分配缓冲区,则可能无法分配足够的空间。读取可能会读取比缓冲区中可用字符更多的字符。更好的想法是使用std :: string(从中你可以得到一个C-String)。
问题2:
没有办法读取无限的字符串。但是你可以使用char*
一次读一行。
std::getline