您好我想弄清楚如何只复制从文本文件中读取的部分行。我想将一行名为fileLine的行复制到名为line的变量中。问题是,我只想从fileLine中的索引10开始复制,但是memcpy不喜欢这样。我怎样才能改变这个让memcpy开心?
int stringLength = 0;
stringLength = strlen(fileLine);
memcpy(line, fileLine[10], stringLength); //this is where things go wrong.
答案 0 :(得分:3)
您已将char
类型传递给预期为const void*
的内容。如果您将char*
传递给它,那就没问题了。您可以&fileLine[10]
或fileLine + 10
。
由于您的偏移量为10,因此您还需要确保复制少10个字符:
memcpy(line, &fileLine[10], stringLength-10);
虽然您可能也想复制字符串终结符...
memcpy(line, &fileLine[10], stringLength-9);
呸!
相反,您可以使用strcpy
:
strcpy(line, fileLine + 10);
在所有情况下,请确保line
是一个数组或指向实际分配给您的进程的内存的指针。
答案 1 :(得分:0)
您可以使用getline函数来获取字符串的一部分。但首先,您必须使用seekg函数将读指针移动到您想要读取的位置。 seekg(ios flag,bytes); cin.getline(来源,字符数,结束字符);