c++ - char[] 乱七八糟的输出

标签 c++ arrays iterator maps char

我创建了一个将 int 映射到 char 的映射。 0-25 到字母 a-z 和 26-35 0-9。

for(int i = 0; i<26; i++)
{
    letters.insert(Match::value_type(i,static_cast<char>(letter + x)));

    x++;
}

for(int i = 26; i<36; i++)
{

    letter = '0' + a;
    letters.insert(Match::value_type(i,letter));
    a++;
}

在这里i输入pin[]其中包含一个数字并查找值。

std::map<int, char >::const_iterator it1 = letters.find(pin[0]);
std::map<int, char >::const_iterator it2 = letters.find(pin[1]);
std::map<int, char >::const_iterator it3 = letters.find(pin[2]);
std::map<int, char >::const_iterator it4 = letters.find(pin[3]);
char fourth  = it4->second;
char third   = it3->second;
char second  = it2->second;
char first   = it1->second;
char combo[] = { first, second, third, fourth};
cout << combo << endl;

一切正常,但我的 cout<< combo给我“abcd[[[[a[[[[[b[[[[c[[[[[d]]]]]pPP。” 我不明白为什么...我想要的输出只是“abcd”我怎样才能清理它。

最佳答案

您需要null-terminate您的字符串才能在 C 风格模式下使用它。所以这将更改为:

char combo[] = { first, second, third, fourth, '\0'};

现在您正在输出内存中的垃圾,在 fourth 之后直到找到 null 字符。

关于c++ - char[] 乱七八糟的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15260571/

相关文章:

c++ - std::iterator、指针和 VC++ 警告 C4996

c++ - 如何计算两个玩家之间的回文游戏的总分?

java - 硬币 split 算法的性能

java - 如何遍历 Object 引用的数组?

java - 当没有删除任何内容时,为什么我会收到 java.util.ConcurrentModificationException?

C++ 集 - 并集、差集、交集 - 导致 vector 删除迭代器错误(超出范围)

c++ - 重载 operator<< 以处理字符串

python - 如何在Python中实现泛型? Java 或 C++ 之类的东西提供

java - Java 与 C++ 中 OpenCV 的实时性能对比

javascript - 范围错误 : invalid array length