0

这只是一个基本的打印句子数组字符串。我是 c++ 新手,只使用过 JAVA 和类似的语言,以前从未使用过 c。尝试通过每种不同的排序算法和数据结构来学习它。

但在我开始之前,只测试我的字符串数组会给我一个错误。我不知道为什么它给我一个错误。编译正常实际上运行并打印预期的内容,但如果您正在调试它会崩溃并出现错误。谁能向我解释为什么会这样。尝试size()length()来自 c++ 库,但必须使用 sizeof() '

//BubbleSort.cpp
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

int main()
{
    string something[14];
    something[0] = "Kate";
    something[1] = "likes";
    something[2] = "lots";
    something[3] = "of";
    something[4] = "cake";
    something[5] = "in";
    something[6] = "her";
    something[7] = "mouth";
    something[8] = "and";
    something[9] = "will";
    something[10] = "pay";
    something[11] = "a";
    something[12] = "lot";
    something[13] = "lol";
    int some = sizeof(something);
    some--;
    for (int i = 0; i < some; i++)
    {
        cout << something[i] << " " ;
    }
    system("pause");
    return 0;
}
4

1 回答 1

8

sizeof(something)不会像您期望的那样返回 14,但它会返回sizeof(string)*14,因此您在尝试打印时遇到缓冲区溢出。你需要的是

some = sizeof(something)/sizeof(string) 

或如@Tiago 所述,您可以使用

some = sizeof(something)/sizeof(something[0])

同样正如@James 建议的那样,您应该研究std:vector.

于 2012-05-11T04:22:14.110 回答