C ++中的char *和cin

问题描述 投票:2回答:2

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

我可以做这个:

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

它完美地运作。

但我没有做到这一点:

 char * tmp
 cin >> tmp;

你能告诉我一个什么是错的“

c++ arrays cin
2个回答
7
投票

好吧,你还没有为qazxsw点指向创建一个对象。

char*

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

char* tmp = new char[MAX_LENGTH];

这种方法意味着你不需要使用std::string strtmp; cin >> strtmp; const char* tmp = strtmp.c_str();


2
投票

几个问题:

new

tmp未分配(目前是随机的)。

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

问题1:

如果您使用operator>>并分配缓冲区,则可能无法分配足够的空间。读取可能会读取比缓冲区中可用字符更多的字符。更好的想法是使用std :: string(从中你可以得到一个C-String)。

问题2:

没有办法读取无限的字符串。但是你可以使用char*一次读一行。

std::getline
© www.soinside.com 2019 - 2024. All rights reserved.