回 帖 发 新 帖 刷新版面

主题:[原创]C++编程基础

[原创]一个菜鸟的疑惑:输入n个字符串,把其中以字母A打头的字符串输出。


 以下是我用两种方法编的代码,出现了不同的错误,望各位大神指点,帮我看看其中的问题,十分感谢。。。
方法一:字符数组
#include <iostream>
using namespace std;
const int m=3,n=10;
int main()
{
 char string[m][n];
 int i;
 cout<<"input"<<m<<"strings:"<<endl;
 for(i=0;i<m;i++)
  cin>>string[i]>>' ';
 for(i=0;i<m;i++)
 {
  if(string[i][0]=='A') cout<<string[i]<<'\n';
 }
 cout<<endl;
 return 0;
}
编译出现的错误是:
桌面\5A15F1\5A15F1.CPP(10) : error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'const char' (or there is no acceptable conversion)
Error executing cl.exe.
5A15F1.exe - 1 error(s), 0 warning(s)
方法二:字符串数组
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
const int n=3;
int main()
{
 cout<<"input"<<n<<"strings"<<endl;
 string str[n];
 char str1[1];
 int i;
 for(i=0;i<n;i++)
  cin>>str[i];
 for(i=0;i<n;i++)
 {
  strcpy(str1,str[i],1);
  if(str1[0]=='A') cout<<str[i]<<'\n';
 }
 cout<<endl;
 return 0;
}
error C2660: 'strcpy' : function does not take 3 parameters
Error executing cl.exe.

5A15.OBJ - 1 error(s), 0 warning(s)

回复列表 (共3个回复)

沙发

第一个,你就是想问为什么 cin >> ' '; 不对
第二个,狗屎吧

板凳

好混乱啊,strcpy函数怎么用的看书啊!

3 楼

strcpy接受两个参数,你应该用strncpy而不是strcpy,但是这样仍然错误。
因为他们两个接受的是参数c-style的,而string类型的参数是不行的。


#include <iostream>
#include <string>

using namespace std;
const int n=3;
int main()
{
    cout<<"input"<<n<<"strings"<<endl;
    string str[n];
    char str1;
    int i;
    for(i=0;i<n;i++)
     cin>>str[i];
    for(i=0;i<n;++i)
    {
          str1=str[i][0];
          if(str1=='A')  
           cout <<str[i]<<endl;
     }
    cout<<endl;

    return 0;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册