Lin*_*ios 5 c++ macos objective-c getline objective-c++
我在Objective-C类中使用此代码(在Objective-C++文件中):
+(NSString *)readString
{
string res;
std::getline(cin, res);
return [NSString stringWithCString:res.c_str() encoding:NSASCIIStringEncoding];
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我每次都得到一个零长度的字符串.从未有机会在命令行输入.没有.当我逐字复制这段代码时main(),它就可以了.我在Build Settings下有ARC.我不知道它发生了什么.OSX 10.7.4,Xcode 4.3.2.
它是一个控制台应用程序.
这意味着有输入等待读取输入.您可以清空输入:
cin.ignore(std::numeric_limits<std::streamsize>::max();
std::getline(cin, res);
Run Code Online (Sandbox Code Playgroud)
如果发生这种情况,则意味着您没有在先前的读取中读取输入流中的所有数据.在尝试阅读更多内容之前,上述代码将删除任何用户输入.
这可能意味着你混合operator>>与std::getline()读取用户输入.您可能应该选择一种技术并在整个应用程序中使用它(std :: getline())(您可以混合它们,您只需要更加小心并在使用运算符后删除'\n'以确保任何后续std :: getline()不混淆..
如果你想读取一个数字读取该行,然后解析该行之外的数字:
std::getline(cin, line);
std::stringstream linestream(line);
linestream >> value;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3181 次 |
| 最近记录: |