c++ - 为什么输出的是方框里的问号而不是数字?

标签 c++ loops output

我正在尝试编写一个程序,如果某个小狗主人的小狗与小狗主人之间的距离超出了一定距离,它会提醒用户。

具体来说,如下程序:

  • 首先要求用户输入主人所在的位置,即输入2个整数ab

  • 然后要求用户输入主人拥有的小狗数量。这是一个正整数 n

  • 对于 n 只小狗中的每只小狗 i,程序要求用户输入小狗 i 的位置。这是 2 个整数 xy,它们当然都依赖于 i。

  • 如果计算出小狗 i 已到达距离其主人大于 10 个单位的距离,则程序应通过打印 i 通知用户。

  • 最后,程序应该告诉用户已打印编号的小狗总数。这个数字由变量 count 表示,一个正整数。

下面是一个例子

Inputs: (Owner location) 2 1 (number puppies) 4 (location puppies) (15 15), (14 -2), (1 3), (0 4)

Outputs: Puppy 1 and Puppy 2 too far away Total 2 puppies too far away

当我尝试运行程序时,程序输出一个问号而不是 i。请问我做错了什么?

#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main() {
    string puppies;

    int a,b;
    cin>>a>>b;

    int n;
    cin>>n;

    int i,x,y,count=0;
    for (i=1;i<=n;i++){
      cin>>x>>y;
      int dist;
      dist=abs(a-x)+abs(b-y);
      if (dist>10){
        count++;
        puppies += i;
      }
    }
    if (count==1){
      cout<<"Puppy "<<puppies[0]<<" too far away"<<endl;
      cout<<"Total "<< count <<" puppy too far away";
    }
    if (count>1){
      int j;
      for (j=0;j<=(count-2);j++){
        cout<<"Puppy "<<puppies[j]<<" and"<<" ";
      }
      cout<<"Puppy "<<puppies[count-1]<<" too far away"<<endl;
      cout<<"Total "<< count <<" puppies too far away";
    }
    if (count==0){
      cout<<"No puppies too far away";
    }
}

这是复制的输出(与上面相同的情况)

Puppy and Puppy too far away Total 2 puppies too far awayPress any key to continue . . .

这是截图

enter image description here

最佳答案

您正在尝试使用 std::string作为数字的容器。它可以为足够小的人做到这一点,当然,但你可能想切换到 std::vector<int> .

您实际观察到的问题是 puppies[0]char , 在std::cout << puppies[0]被解释为单个文本字符,在您的情况下是对应于不可打印字符的低代码点,因此您的 shell 显示问号。您可以通过使用 static_cast<int>(puppies[0]) 显式转换来修复它, 但再次为实际数字使用合适的容器会更可取。

关于c++ - 为什么输出的是方框里的问号而不是数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54766635/

相关文章:

C++:如何使用初始化列表初始化内部结构的成员?

r - 使用数据帧中另一列的时间戳检查特定时间跨度的列中的值

html - 有没有办法捕获多个复选框并选择框项目?

C/C++ printf() 在 scanf() 问题之前

python - 使用 Popen 获取输出彩色文本

c++ - 在函数 C++ 之间传递结构

c++ - 运算符转换、GCC 和 clang : which compiler is right?

c++ - 还有其他选择吗?

javascript - 在单次迭代中对两个数组求和

r - 从统计测试中提取输出