使用cl.exe(Visual Studio 2008)为此cpp代码编译错误

时间:2009-03-13 13:10:51

标签: c++ visual-studio compiler-construction

我在这段代码中遇到编译错误

    #include<iostream>
    #include<cstdio>
    #include<string>
    using namespace std;
    void main(int argc,char *argv[])
    {
        int i;
        for(i = 0;i<10;i++)
           fprintf(cout,"%d\n",i);
        fprintf(cout,"abc:\n");
        string s;
        cin>>s;
        if(s == "resume") { 
            for(i = 0;i<10;i++)
            fprintf(cout,"%d\n",i);
        }
   }

Microsoft(R)32位C / C ++优化编译器版本15.00.21022.08 for 80x86 版权所有(C)Microsoft Corporation。保留所有权利。

try.cpp C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ INCLUDE \ xlocale(342):警告C 4530:使用了C ++异常处理程序,但未启用展开语义。指定 / EHSC

try.cpp(9):错误C2664:'fprintf':无法从'std :: ostr转换参数1 eam'到'FILE *'         没有可用于执行此转换的用户定义转换运算符 ersion,或运营商不能被称为

try.cpp(10):错误C2664:'fprintf':无法从'std :: ost转换参数1 ream'to'FILE *'         没有可用于执行此转换的用户定义转换运算符 ersion,或运营商不能被称为

try.cpp(16):错误C2664:'fprintf':无法从'std :: ost转换参数1 ream'to'FILE *'         没有可用于执行此转换的用户定义转换运算符 ersion,或运营商不能被称为

出了什么问题?

6 个答案:

答案 0 :(得分:6)

您正在混合使用C ++和C输出样式。将您的fprintf更改为:

cout << "value is: " << i << "\n";

答案 1 :(得分:4)

std::fprintf(stdout, )

答案 2 :(得分:2)

std :: cout没有FILE *类型。

答案 3 :(得分:1)

或者,将您的包含更改为:

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

fprintf()调用

fprintf(stdout,"abc:\n");

然后你说C

答案 4 :(得分:0)

您正在错误地混合使用C和C ++。仅使用1,并坚持使用,直到您了解这些类型之间的差异为止。

答案 5 :(得分:0)

这是没有编译错误的代码:

#include <iostream>
#include <string>

int main()
{
  using namespace std;

  for(int i = 0; i < 10; i++)
    cout << i << '\n';
  cout << "abc" << endl;

  string s;
  cin >> s;
  if(s == "resume") 
    for(int i = 0; i < 10; i++)
      cout << i << '\n';

  return 0;
}