我想使用 cin 向 char * 变量输入一个不定长度的字符串;
我可以做这个:
char * tmp = "My string";
cout << tmp << endl;
system("pause");
它完美地工作。
但我没有这样做:
char * tmp
cin >> tmp;
你能告诉我有什么问题吗?”
好吧,你还没有为char*
to 指向创建一个对象。
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* 或字符串一起使用时)读取单个(空格分隔)单词。
问题一:
如果您使用char*
并分配一个缓冲区,那么您可能没有分配足够的空间。读取的字符可能比缓冲区中可用的字符多。一个更好的主意是使用 std::string (从这里你可以得到一个 C-String)。
问题 2:
没有办法读取不定字符串。但是您可以使用 . 一次读取一行std::getline
。
std::string line;
std::getline(std::cin, line);
char* str = line.data();