【问题标题】:How to get input integer value into char type variable using cin?如何使用 cin 将输入整数值转换为 char 类型变量?
【发布时间】:2018-09-13 04:29:10
【问题描述】:
void defineEdge()
{
    char vertex1, vertex2;
    int charToInt = 0;

    while (charToInt != -1)
    {
        cout << "Define an edge by listing a pair of vertices (-1 to stop):  ";
        cin >> vertex1 >> vertex2;
        cin.ignore(256, '\n');
        charToInt = vertex1 - '0';

        // getVertexIndex() eventaully returns the index representing
        // [index of vertex1][index of vertex2] in 1-D array 
        // Assign 1 to represent the directed connection between 2 vertices 
        graphMatrix[getVertexIndex(vertex1, vertex2)] = 1;
    }

}

这是代表图形类的矩阵的成员函数部分。 该矩阵是未加权有向图的邻接矩阵。 该矩阵被动态分配为一维数组并使用行主要顺序来访问所需的索引。

我正在尝试获取如下顶点来定义边:

通过列出一对顶点来定义一条边(-1 停止): A B 通过列出一对顶点来定义一条边(-1 停止): B A 通过列出一对顶点来定义一条边(-1 表示停止):-1 A

但是,每当我输入 -1 时都会出现调试错误

运行时检查失败 #3 - 变量 'vertex2Index' 在未初始化的情况下被使用。

我想知道是否有正确的方法来获取整数值(例如 -1) char 变量(例如 vertex1)

编辑:还有另一个整数列表用于存储顶点,所以我想使用getVertexIndex()获取vertex1和vertex2来获取对应索引的索引。

【问题讨论】:

  • 嗯。 “-1”不是已经是2个字符了吗?
  • @FrançoisAndrieux 你不能把A读成int
  • @NathanOliver 谢谢,我没有注意到示例输入。
  • 使用cin.peek()查看流中的下一个字符是否为'-',如果是,则读取int,否则读取char
  • @Remy Lebeau 谢谢你,我认为这会解决问题。

标签: c++ types char int cin


【解决方案1】:

您可以按照评论中的建议使用cin.peek()。 不过,我觉得读入字符串会更简单,并使用stoi()。 顺便说一句,您是否故意不跳过最后一个条目(将-1作为顶点1)?这在您的实施中尚不清楚。

【讨论】:

  • 感谢您的回答:)。所以我应该将顶点列表作为字符串列表并读取字符串行并分解为标记并将它们存储到顶点列表中?
  • @anthony_park 这真的取决于你如何输入文件。如果它是一个包含所有对的大行 - 是的,您将必须阅读所有这些并将它们分解为标记。但是,如果一行中有一个顶点 - 您可以一个一个地读取它们。
  • 我解决了读取一行字符串中的 2 个顶点作为示例输出显示方式的问题。感谢您的洞察力
  • 我认为一次读取 2 个顶点还具有使输入文件最易读的好处。
猜你喜欢
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 2013-03-13
  • 2017-05-30
相关资源
最近更新 更多