Loading

杂项:输入流和memcpy

输入流

c++ 中常用cin接受输入,在C中可以定义main函数

int main(int argv,char* argc)

来接受参数数量和参数字符串
在c++中可以通过接受字符串流的方式,分段处理输入的字符串

//接受输入的字符串 read text 123
string line;
getline(cin, line);
//变为输入流
istringstream iss(line);
string s1;
string s2;
int val;
iss >> s1 >> s2 >> val;
//s1 read
//s2 text
//val 123

memcpy和memmove

两者类似,只不过memcpy一般不会用来处理重叠区域的字符串复制,但在实际面试中,一般都希望写出memmove既可以处理重叠字符串的复制

void* memmove( void* dest, const void* src, std::size_t count )
{
	char *psrc;
	char* pdest;
	if(dest == nullptr || src == nullptr)
	{
		return nullptr;
	}
	//考虑地址重叠,倒序复制
	if((src < dest) && ((char*)src+count) > (char*)dest)
	{
		psrc = (char*)src + count-1;
		pdest = (char*)dest + count-1;
		while(count--)
		{
			*psrc-- = *pdest--;
		}
	}
	else
	{
		psrc = (char*)src;
		pdest = (char*)dest;
		while(count--)
		{
			*psrc++= *pdest++;
		}
	}
	return dest;
}
posted @ 2024-04-20 15:34  XTG111  阅读(1)  评论(0编辑  收藏  举报