Moxa嵌入式编程:奇怪的错误 我正在做一个项目,我们使用的是一个艾米诺-1220—LX运行Linux,用C++编程。在开发过程中,我遇到了一个奇怪的错误

Moxa嵌入式编程:奇怪的错误 我正在做一个项目,我们使用的是一个艾米诺-1220—LX运行Linux,用C++编程。在开发过程中,我遇到了一个奇怪的错误,c++,embedded,embedded-linux,microcontroller,C++,Embedded,Embedded Linux,Microcontroller,我有以下代码: std::string vector_to_string(std::vector<int> vec) { std::stringstream ss; for (int i = 0; i < vec.size(); i++) { ss << vec[i] << "."; } return ss.str(); } void print_string(std::string text) {

我有以下代码:

std::string vector_to_string(std::vector<int> vec) {
    std::stringstream ss;
    for (int i = 0; i < vec.size(); i++) {
        ss << vec[i] << ".";
    }
    return ss.str();
}

void print_string(std::string text) {
    std::cout << text << "\n";
}

std::vector<int> local_vector;
local_vector.push_back(123);
local_vector.push_back(456);
local_vector.push_back(789);

//Case 1: Prints 456.789.
print_string(vector_to_string(local_vector));

//Case 2: Prints 123.456.789.
std::string temp = vector_to_string(local_vector);
print_string(temp);

有人知道为什么在案例1中删除向量中的第一个条目,但在案例2中效果很好吗?

我无法通过编译问题代码重现您的问题。也许代码中的其他地方有一个bug,它会导致堆/堆栈损坏

旧答案:您似乎有一个bug:

for (int i = 0; i < vec.size(); i++) {
    ss << vec << ".";
}

中间的一行不应该写ss啊,谢谢。但这只是帖子中的一个错误。现在编辑它: