解析字符串导致重复的值
Parsing string results in duplicated values
本文关键字:字符串 更新时间:2023-10-16
我有一个字符串,其中包含任意数量数字的整数,我需要将每个整数分析为先前分配的程序的矩阵元素。由于某种原因,当给出新字符串时,输出将重复字符串的最后数字,例如:
data.txt
1 4 5 6 8
5 5 5 5 5
3 3 3 3 3
1 1 1 1 1
程序输出:
1 4 5 6 5
5 5 5 5 3
3 3 3 3 1
1 1 1 1 1
我可以看到,每行的最后一个元素都被下一行的第一个元素覆盖,但是我不知道为什么要这样做。这是相关代码:
while(getline(inFile, readIn)) {
parse(readIn, mtrx, r);
r++;
}
//......
void parse(string str, matrix& mtrx, int r)
{
string value = "";
str.append("*");
int i=0; //finds integers in string
int c=0; //place holders for columns
while( i < str.length() ) {
value = "";
while( str[i] != ' ' && str[i] != '*' ) {
value += str[i];
i++;
}
mtrx.set(r,c, atoi(value.c_str()));
c++;
i++;
}
}
看起来MTRX只是4x4元素,因为在C 中,默认情况下没有数组界限测试,因此您可以超越界限。在编写一行的最后一个元素时,您可以编写下一行的第一个元素,该元素在编写下一行时被覆盖。阅读一行的最后一个元素时,您会读取下一行的第一个元素。最后一行中的最后一个元素还可以,因为您在数组本身之外写了并读回本元素,但这可能会引起其他有趣的问题。