Ker*_* SB 10
格式化I/O; 摘自Baby's First C++:
#include <string>
#include <iostream>
int main()
{
std::string name;
std::cout << "Enter your name: ";
std::getline(std::cin, name);
std::cout << "Thank you, '" << name << "'." << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
这不太令人满意,因为许多事情都可能(因此会出错).这是一个稍微防水的版本:
int main()
{
std::string name;
int score = 0;
std::cout << "Enter your name: ";
if (!std::getline(std::cin, name)) { /* I/O error! */ return -1; }
if (!name.empty()) {
std::cout << "Thank you, '" << name << "', you passed the test." << std::endl;
++score;
} else {
std::cout << "You fail." << std::endl;
--score;
}
}
Run Code Online (Sandbox Code Playgroud)
使用getline()意味着您可能会读取空行,因此检查结果是否为空是值得的.检查读操作的正确执行也是很好的,因为用户可以将空文件传输到stdin中(例如,通常,永远不要假设存在任何特定情况并为任何事情做好准备).另一种方法是令牌提取,std::cin >> name它一次只读取一个单词,并像任何其他空格一样处理换行符.