C ++:确定变量是否不包含数据

时间:2010-11-07 15:53:38

标签: c++

我一直在乱用C ++但我还是很新的。我搜索了一下,甚至使用了我试图解决的问题的关键字产量没有结果。基本上我只想弄清楚如何判断变量是否没有数据。我有一个程序读取的文件,它在该文件中搜索特定字符,并且基本上使用分隔符来确定将实际数据存储在变量中的位置。现在我在文件中添加了一些注释,说它不应该被编辑,这导致了一些问题。所以我非常想要计算评论的数量,但我不知道该怎么做,因为我设置它的方式导致返回大量的数字。所以我想我会尝试用一个简单的if语句修复它,看看数组在运行循环时是否有任何数据,如果有,那么只需在我的变量中添加+1。不用说它没用。这是代码。如果您知道更好的方法,请务必分享。

size_t arySearchData[20];
size_t commentLines[20];
size_t foundDelimiter;
size_t foundComment;
int commentsNum;

foundDelimiter = lineText.find("]");
foundComment = lineText.find("#");

if (foundComment != std::string::npos) {
    commentLines[20] = int(foundComment);

    if (foundComment = <PROBLEM>){
        commentsNum++;
    }
}

所以它成功地在我的文件中获得了两个注释,并且认识到它们位于每行的第一个索引(0)但是当我试图让它只是在我的第一个if语句中执行commentsNum ++它只是出现了吨随机数字,我不知道为什么。所以当我说我的问题是在第二个if语句中时,我需要一个空白或者只是一个更好的方法来解决这个问题。任何帮助将不胜感激。

是的,我确实意识到我可以确定那里是否有'数据'而不是空或null但是它必须是特定的,如果注释(#)之前有空格,那么它将索引文件的方法变得无用,因为索引会发生变化。

3 个答案:

答案 0 :(得分:2)

C ++中的变量总是包含数据,只是可能没有初始化。

int i;

它会有一些价值,在你做

这样的事情之前无法确定它是什么
i = 1337;

直到你这样做,i的值才会出现在i被分配到的内存位置。

编译可能会发现你正在尝试使用一个你实际没有给自己一个值的变量,但这通常只是一个警告,因为这样做是没有错的< / p>

答案 1 :(得分:1)

您没有初始化commentsNum。试试这个:

int commentsNum = 0;

答案 2 :(得分:0)

C++变量以外的static变量中,其他变量被赋予未确定的值。这主要是为了坚持基础哲学 - “你不为你不使用的东西买单”,所以默认情况下它不会将内存归零。“但是,对于static变量,内存是在链接时分配。与运行时初始化不同,链接时间分配和初始化需要低成本。

我建议设置 int commentsNum = 0;