我只是想通过 printf 打印出一个子字符串,但一直出现错误
#include <iostream>
#include <string>
#include <cstdio>
int main(int argc, char *argv[]) {
std::string argv1 = argv[1];
if (argc == 2 && argv1.length() > 3) {
printf("%s\n", argv1.substr(0, 2));
}
}
Run Code Online (Sandbox Code Playgroud)
错误显示:
警告:格式“%s”需要“char*”类型的参数,但参数 2 的类型为“std::__cxx11::basic_string*”[-Wformat=]
printfwith%s期望 a char *,但string::substr返回另一个std::string。您可以char*通过该c_str()方法从字符串中获取底层证券。
printf("%s\n", argv1.substr(0, 2).c_str());
Run Code Online (Sandbox Code Playgroud)