首页 > 解决方案 > 在 C++ 中将 char 数组转换为字符串时出现额外字符

问题描述

因此,我编写了一个代码,在每次迭代中获取三个字符串,并存储从这三个字符串中获取每个字符的所有长度为三的组合(保持顺序)。我使用 char 数组来进行这些组合,然后将该 char 数组转换为字符串并插入到 unordered_set 中。这样做时,我遇到了一个问题,我看到在某些字符串的末尾添加了一个额外的字符。这是我的代码:

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    char charArr[3];
    string strArr[3];
    unordered_set<string> aSet;
    cin >> n;
    while(n-- > 0) {
        cin >> strArr[0] >> strArr[1] >> strArr[2];
        for(int x=0; x<strArr[0].size(); x++) {
            charArr[0]=strArr[0][x];
            for(int y=0; y<strArr[1].size(); y++) {
                charArr[1]=strArr[1][y];
                for(int z=0; z<strArr[2].size(); z++) {
                    charArr[2]=strArr[2][z];
                    string tempStr(charArr);
                    cout << "Len = " << tempStr.length() << "\n";
                    aSet.insert(tempStr);
                }
            }
        }
    }
    cout << "Check aaz = " << aSet.count("aaz") << "\n";
    for(auto it=aSet.begin(); it!=aSet.end(); it++) {
        cout << *it << "\n";
    }
}

这是一个示例输入:

2
a a z
c a c

这是输出:

Len = 4
Len = 3
Check aaz = 0
cac
aaz

这是它在我的电脑中的外观图片:

在此处输入图像描述

但是,当我在ideone中为相同的输入运行相同的代码时,它给了我正确的答案。如下:

Len = 3
Len = 3
Check aaz = 1
cac
aaz

谁能解释一下这里发生了什么?

注意:我正在使用 CodeBlocks 和 C++14

标签: c++stringchar

解决方案


推荐阅读