c++:如何更正将字符串数组转换为函数

c++: How to correct transfer array of char strings into function?

本文关键字:数组 转换 函数 字符串 正将 何更 c++      更新时间:2023-10-16

例如:

#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");

如果注释错误的成员函数声明并用括号代替大括号,则将编译代码。:)

    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" } );

使用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