c ++:如何纠正char字符串转换成函数?

时间:2014-11-03 18:17:11

标签: c++ string function struct char

例如:

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

using namespace std;

struct st
{
  string name[3];
  st(char X[][]) { for(int i=0; i<3; i++) name[i] = X[i];} 
} Y( {"Text1", "Text2", "Text3"} );

但是Y({“Text1”,“Text2”,“Text3”})不起作用。我不知道正确的答案。请帮助。

这很好用。

struct st
    {
      string name;
      st(char X[]) { name[i] = X;} 
    } Y("Text1");

2 个答案:

答案 0 :(得分:1)

如果要注释错误的成员函数声明并用括号替换括号,那么代码将被编译。 :)

    struct st
    {
        std::string name[3];
//          std(char X[][]) { for(int i=0; i<3; i++) name[i] = X[i];} 
    } Y { {"Text1", "Text2", "Text3"} };

至于成员函数(似乎你想定义一个构造函数),那么它可以定义为

st( const char *s[3] ) 
{
   for ( size_t i = 0; i < 3; i++ ) name[i] = s[i]; 
} 

或者你可以定义像

这样的结构
struct st
{
    std::string name[3];
    st( std::initializer_list<const char *> l ) 
    {
        size_t n = std::min<size_t>( 3, l.size() );
        std::copy_n( l.begin(), n, name ); 
    }   
} Y ( {"Text1", "Text2", "Text3" } );

答案 1 :(得分:0)

使用C ++ 11

struct st
{
    array<string, 3> name;
    st(const array<string, 3>& name)
        : name(name)
    {
    }
};

int main()
{
    st s({ "Text1", "Text2", "Text3" });
    cout << s.name[0] << endl;
}

实例 http://ideone.com/cxMNnX