【发布时间】:2012-07-06 02:04:29
【问题描述】:
我在 Objective-C 类中有这段代码(在 Objective-C++ 文件中):
+(NSString *)readString
{
string res;
std::getline(cin, res);
return [NSString stringWithCString:res.c_str() encoding:NSASCIIStringEncoding];
}
当我运行它时,我每次都会得到一个长度为零的字符串。从来没有机会在命令行输入。没有。当我将这段代码逐字复制到main() 中时,它就可以工作了。我在构建设置下打开了 ARC。我不知道发生了什么。 OSX 10.7.4,Xcode 4.3.2。
它是一个控制台应用程序。
【问题讨论】:
-
你试过
std::cin以防cin被屏蔽了吗? -
缓冲区中是否有换行符等待?
-
表示输入端有输入等待读取。您可以清空输入:cin.ignore(std::numeric_limits<std::streamsize>::max())
-
@Linuxios 输出无关紧要。当您输入数字时,将读取数字的数字,不读取换行符。所以有一个换行符等待阅读。当您使用
getline时,它会读取换行符并立即返回,不允许您输入任何输入,因为它已经找到了行尾。 -
@Hurkyl 不,这是经典的“在数字后读取字符串”问题。
标签: c++ objective-c macos objective-c++ getline