std :: string的最后一个元素是什么

时间:2014-06-04 03:32:08

标签: c++ string

现在,我正在阅读一个文件,然后检查每一行并将每个字符放入char[]。但是,当我运行for loop并加i等于string length时,Visual Studio 2010中开发的程序将崩溃。但是,当我在安装了Visual Studio 2012的笔记本电脑上开发时,最终字符将是\0

例如:

while(getline(infile, str)) {
    char buf[1024];
    int index = 0;
    for (int i = 0; i < str.length(); i++) {
        while(str[i] != ',' && str[i] != '\0') {
            buf[index++] = str[i++];
        }
    }
}

当我使用Visual Studio 2010但在Visual Studio 2012中取得成功时会崩溃。有谁知道原因?字符串的最后一个元素是什么?不是\0吗?或者这是编译器问题?如果有什么不足,请告诉我补充。

2 个答案:

答案 0 :(得分:0)

根据此回答will-stdstring-always-be-null-terminated-in-c11str[str.length()]将返回&#39; \ 0&#39;。 但显然没有举行&#39; \ 0&#39;但在记忆中。

在Praetorian评论后更正。

答案 1 :(得分:0)

正如@metacubed所提到的,我使用Release mode,它可以正常工作。