C++ c++;帮助我理解为什么没有输出

C++ c++;帮助我理解为什么没有输出,c++,codeblocks,C++,Codeblocks,这个程序很简单: 1) 获取一个输入字符串。 2) 将其转换为long。 3) 打印转换结果 应为输出,但未找到任何内容 #include <stdio.h> #include <string> using namespace std; int main() { string ch; scanf

这个程序很简单: 1) 获取一个输入字符串。 2) 将其转换为long。 3) 打印转换结果

应为输出,但未找到任何内容

            #include <stdio.h>
            #include <string>

            using namespace std;
         int main()
              {
               string ch;
               scanf("%s",ch);

               long l=stol(ch);

               printf("%l",l);
               return 0;
              }
#包括
#包括
使用名称空间std;
int main()
{
弦ch;
scanf(“%s”,ch);
长l=stol(ch);
printf(“%l”,l);
返回0;
}

下面是如何用C++ I/O.来做的,在C++程序中使用C I/O的理由很小。
#include <iostream>
#include <string>

int main()
{
    std::string input;
    std::cin >> input; // take an input string
    long lval = stol(str); // convert to long
    std::cout << lval << '\n' // print the result
}
#包括
#包括
int main()
{
std::字符串输入;
std::cin>>输入;//获取输入字符串
long lval=stol(str);//转换为long

std::cout std::string和scanf不能一起工作。请注意您的编译器警告。如果您的编译器没有警告您,请立即升级。您的代码在my Ubunu g++下编译,并返回:警告:格式“%s”要求参数类型为“char*”,但参数2的类型为“std::u cxx11::string”{aka'std::-------我认为您希望从用户处获取char并返回其长整数值,但请注意您的sacnf获取的字符串带有%s@n.m.用我能代替的,为什么你要混合C和C++?只需要使用你真正想要的。这个站点不是按需C++教程。