C++ 为什么输出是方框中的问号而不是数字?

C++ 为什么输出是方框中的问号而不是数字?,c++,loops,output,C++,Loops,Output,我正在尝试编写一个程序,如果某个小狗主人的小狗与小狗主人的距离超过一定距离,就会提醒用户 具体而言,以下计划: 首先要求用户输入所有者的位置,即输入2个整数a和b 然后要求用户输入主人拥有的小狗数量。这是一个正整数n 对于n只小狗中的每只小狗i,程序要求用户输入小狗i的位置。这是2个整数x和y,它们当然都依赖于i 如果计算出小狗i与主人的距离大于10个单位,则程序应通过打印i通知用户 最后,程序应该告诉用户已经打印了号码的小狗的总数。此数字由变量count表示,它是一个正整数 下面是一个例子

我正在尝试编写一个程序,如果某个小狗主人的小狗与小狗主人的距离超过一定距离,就会提醒用户

具体而言,以下计划:

  • 首先要求用户输入所有者的位置,即输入2个整数
    a
    b

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

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

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

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

下面是一个例子

投入: (业主所在地)2 1 (小狗数量)4只 (位置小狗)(15),(14-2),(13),(04)

产出: 小狗1和小狗2太远了 总共有2只小狗离得太远了

当我尝试运行程序时,程序输出一个问号,而不是
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";
    }
}
#包括
#包括
#包括
使用名称空间std;
int main(){
弦乐小狗;
INTA,b;
cin>>a>>b;
int n;
cin>>n;
整数i,x,y,计数=0;
对于(i=1;i>x>>y;
国际区;
dist=abs(a-x)+abs(b-y);
如果(距离>10){
计数++;
幼犬+=i;
}
}
如果(计数=1){

不能您试图使用
std::string
作为数字的容器。当然,对于足够小的数字,它可以这样做,但您可能需要切换到
std::vector

您实际观察到的问题是,
小狗[0]
是一个
char
,它位于
std::cout中
如果查看重载集,您会发现
int
没有重载。但是,
char
有重载。所有整数类型都可以隐式转换为其他整数类型,在这种情况下,
int
转换为
char
。附加到字符串的字符就是其中一个由整数值表示。哪个整数值表示哪个字符取决于系统使用的字符集

您可能打算将整数附加到文本表示中。例如,您可以使用
std::to_string
将整数转换为字符串


也就是说,使用字符串来实现这一目的似乎是倒退的,因为您似乎没有将其用作字符串,而是更像一个整数数组。因此,整数向量可能是一个更明智的选择。

程序输出一个问号,而不是i的
,它只输出一个问号,可以吗发布准确的输出。@KamilCuk已编辑。Thanks@Kira很好,很好,昆汀,你能帮@Kira吗
puppies += i;