【发布时间】:2011-09-25 23:17:32
【问题描述】:
我有以下代码:
char myText[256];
cin.getline(myText,256);
为什么我必须将字符数组传递给 cin.getline() 而不是字符串?
我已经读过,一般来说使用字符串比使用字符数组更好。如果可能的话,我是否应该在使用cin.getline() 检索输入后将字符数组转换为字符串?
【问题讨论】:
我有以下代码:
char myText[256];
cin.getline(myText,256);
为什么我必须将字符数组传递给 cin.getline() 而不是字符串?
我已经读过,一般来说使用字符串比使用字符数组更好。如果可能的话,我是否应该在使用cin.getline() 检索输入后将字符数组转换为字符串?
【问题讨论】:
您正在使用 istream 的成员方法。在这种情况下,辛。这个函数的详细信息可以在这里找到:
http://en.cppreference.com/w/cpp/io/basic_istream/getline
不过你可以使用std::getline
它使用字符串而不是 char 数组。使用字符串更容易,因为它们知道它们的大小,它们会自动增长等等,而且你不必担心空终止字符等等。也可以使用适当的字符串构造函数将 char 数组转换为字符串。
【讨论】:
我相信这是一件不幸的历史文物。
不过,您可以改用std::getline free 函数。
std::string myText;
std::getline(std::cin,myText);
【讨论】:
getline(std::cin, myText);,编译器会自动查找namespace std。