现在,我正在阅读一个文件,然后检查每一行并将每个字符放入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
吗?或者这是编译器问题?如果有什么不足,请告诉我补充。
答案 0 :(得分:0)
根据此回答will-stdstring-always-be-null-terminated-in-c11,str[str.length()]
将返回&#39; \ 0&#39;。 但显然没有举行&#39; \ 0&#39;但在记忆中。 击>
在Praetorian评论后更正。
答案 1 :(得分:0)
正如@metacubed所提到的,我使用Release mode
,它可以正常工作。