我来自Python背景,最近正在学习C++。我正在学习一个叫做memset
的C/C++函数,并遵循来自网站https://www.geeksforgeeks.org/memset-in-cpp/的在线示例,在这里我遇到了一些编译错误:
/**
* @author : Bhishan Poudel
* @file : a02_memset_geeks.cpp
* @created : Wednesday Jun 05, 2019 11:07:03 EDT
*
* Ref:
*/
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
int main(int argc, char *argv[]){
char str[] = "geeksforgeeks";
//memset(str, "t", sizeof(str));
memset(str, 't', sizeof(str));
cout << str << endl;
return 0;
}
使用单引号 't' 时出错
这会打印额外的字符。
tttttttttttttt!R@`
使用双引号时,使用"t"出错
$ g++ -std=c++11 a02_memset_geeks.cpp
a02_memset_geeks.cpp:17:5: error: no matching function for call to 'memset'
memset(str, "t", sizeof(str));
^~~~~~
/usr/include/string.h:74:7: note: candidate function not viable: no known
conversion from 'const char [2]' to 'int' for 2nd argument
void *memset(void *, int, size_t);
^
1 error generated.
如何在C++中使用memset?
进一步学习
这里提供了关于memset
缺点的优秀教程:
https://web.archive.org/web/20170702122030/https:/augias.org/paercebal/tech_doc/doc.en/cp.memset_is_evil.html
memset
函数?旧的C函数之所以存在是为了向后兼容。 - klutt