当前位置: 首页 > 面试题库 >

C ++:以编程方式初始化输入

尹庆
2023-03-14
问题内容

如果我们有以下代码片段:

int a;
cout << "please enter a value: "; 
cin >> a;

在终端中,输入请求如下所示

please enter a value: _

如何以编程方式模拟用户的输入。


问题答案:

这是一个示例,该示例如何cin使用rdbuf()函数来操纵的输入缓冲区,以从检索假输入std::istringstream

#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main() {

    istringstream iss("1 a 1 b 4 a 4 b 9");
    cin.rdbuf(iss.rdbuf());  // This line actually sets cin's input buffer
                             // to the same one as used in iss (namely the
                             // string data that was used to initialize it)
    int num = 0;
    char c;
    while(cin >> num >> c || !cin.eof()) {
        if(cin.fail()) {
            cin.clear();
            string dummy;
            cin >> dummy;
            continue;
        }
        cout << num << ", " << c << endl;
    }
    return 0;
}

看到它正常工作

另一个选择(与JoachimPileborg在其评论恕我直言中所说的更接近)是将阅读代码放入单独的函数中,例如

int readIntFromStream(std::istream& input) {
    int result = 0;
    input >> result;
    return result;
}

这使您可以进行不同的测试和生产要求,例如

// Testing code
std::istringstream iss("42");
int value = readIntFromStream(iss);

// Production code
int value = readIntFromStream(std::cin);


 类似资料:
  • 我查看了演示示例代码,发现他们使用的解决方案是在中初始化MapFragment,并在调用之后,在中获取对GoogleMap的引用。 我需要在MapFragment初始化后立即获得对GoogleMap的引用,因为我希望用户能够用按钮显示或隐藏地图。我知道一个可能的解决方案是像上面所说的那样在开始时创建地图,然后设置它的可见性消失,但我希望地图默认关闭,这样如果用户没有明确要求,它就不会占用用户的带宽

  • 1. 前言 通过之前的学习,我们可以熟练掌握 Spring 容器初始化的方法。常用的方法:一种是纯 xml 文件的方式,第二种是使用群体最多的一种,就是 xml 文件搭配类上面的注解,来进行初始化容器。 我们今天讲解一种全新的方法,也是目前最为流行的一种方法。是基于 JavaConfig 的方式来实现。通俗地说也叫基于注解的方式。 疑问导出: 我们学完了那么多种 Spring 的使用,其实完全可以

  • 在XML中,我用TableRow(表的标题)定义了TableLayout。每隔一行将以编程方式添加。问题:我无法使新行与XML中的行对齐 > 3个TextView数组,1个TableRow数组 循环使用TextViews和TableRows填充这些数组 全部赋予setTableRowParams方法 设置TextViews的文本 将所有行添加到TableLayout setTableRowPara

  • 问题内容: 我需要延迟初始化地图及其内容。到目前为止,我有以下代码: 这显然不是线程安全的,就好像一个线程在null时出现,继续将字段初始化为,并且当该字段仍将数据加载到映射中时,另一个线程执行a 并且在可能存在的情况下不获取数据。 当第一次调用发生时,如何确保数据仅在地图中加载一次。 请注意,所有初始化后,地图中可能不会存在。同样,在所有初始化之后,映射可能只是空的。 问题答案: 双重检查锁定

  • 问题内容: 有没有办法像这样初始化Java HashMap? 正确的语法是什么?我还没有发现任何有关此的信息。这可能吗?我正在寻找在地图中放置一些“最终/静态”值的最短/最快方法,这些值永远不会改变,并且在创建地图时会事先知道。 问题答案: 所有版本 如果你碰巧只需要一个条目:有。 对于Java版本9或更高版本: 是的,现在有可能。在Java 9中,添加了一些工厂方法来简化地图的创建: 在上面的示

  • 本文向大家介绍C++ 数组初始化,包括了C++ 数组初始化的使用技巧和注意事项,需要的朋友参考一下 示例 数组只是特定类型变量的顺序存储位置的块。数组的分配方式与普通变量相同,但是在其名称后附加方括号,方括号[]中包含适合数组内存的元素数。 下面的数组示例使用typ int,变量名arrayOfInts和[5]数组可以容纳的元素数: 可以像这样同时声明和初始化数组 通过列出其所有成员来初始化数组时