【问题标题】:c++: How to correct transfer array of char strings into function?c ++:如何将char字符串数组正确传输到函数中?
【发布时间】:2014-12-30 11:21:34
【问题描述】:

例如:

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

【问题讨论】:

  • 废话。首先阅读一些介绍性的 C++ 。不要仅仅为了问问题而问问题。首先学习基础知识,做一些练习,然后在解决练习时遇到任何问题提出问题。

标签: c++ string function struct char


【解决方案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" } );

【讨论】:

  • 这只是一个例子。构造函数有很多参数,那怎么办?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 2017-06-15
    • 1970-01-01
    相关资源
    最近更新 更多