C++,我如何打印一个 substr?

hao*_*ark 2 c++

我只是想通过 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=]

sel*_*bie 6

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)